SharedBufferReceivedEvent class
Ereignisobjekt für das chrome.webview.sharedbufferreceived
Ereignis. Dieses Ereignis wird ausgelöst, wenn CoreWebView2.PostSharedBufferToScript
erfolgreich aufgerufen wird.
- Extends
Hinweise
Beispiele
Im folgenden Beispiel werden Daten zur einmaligen, schreibgeschützten Nutzung an das Skript gesendet.
Legen Sie zunächst im Code der nativen Host-App Daten im freigegebenen Speicher fest:
wil::com_ptr<ICoreWebView2ExperimentalEnvironment10> environment;
CHECK_FAILURE(
m_appWindow->GetWebViewEnvironment()->QueryInterface(IID_PPV_ARGS(&environment)));
wil::com_ptr<ICoreWebView2ExperimentalSharedBuffer> sharedBuffer;
CHECK_FAILURE(environment->CreateSharedBuffer(bufferSize, &sharedBuffer));
// Add data to shared memory via IStream.
wil::com_ptr<IStream> stream;
CHECK_FAILURE(sharedBuffer->OpenStream(&stream));
CHECK_FAILURE(stream->Write(data, sizeof(data), nullptr));
PCWSTR additionalDataAsJson = L"{\"myBufferType\":\"bufferType1\"}";
if (fromFrame)
{
m_webviewFrame4->PostSharedBufferToScript(
sharedBuffer.get(), COREWEBVIEW2_SHARED_BUFFER_ACCESS_READ_ONLY,
additionalDataAsJson);
}
else
{
m_webView18->PostSharedBufferToScript(
sharedBuffer.get(), COREWEBVIEW2_SHARED_BUFFER_ACCESS_READ_ONLY,
additionalDataAsJson);
}
// Close the one-time shared buffer, to release resources.
sharedBuffer->Close();
Abonnieren Sie im HTML-Dokument das sharedbufferreceived-Ereignis, und behandeln Sie es.
Abonnieren Sie als Nächstes im HTML-Dokument das -Ereignis, und behandeln Sie es sharedbufferreceived
dann:
window.chrome.webview.addEventListener("sharedbufferreceived", e => {
SharedBufferReceived(e);});
let readOnlySharedBuffer;
function ShowReadOnlySharedBuffer() {
if (readOnlySharedBuffer) {
DisplaySharedBufferData(readOnlySharedBuffer);
} else {
// Post a web message to ask host to share the one time read only buffer.
chrome.webview.postMessage("RequestOneTimeShareBuffer");
}
}
function DisplaySharedBufferData(buffer) {
document.getElementById("shared-buffer-data").value =
new TextDecoder().decode(new Uint8Array(buffer));
}
function SharedBufferReceived(e) {
if (e.additionalData && e.additionalData.myBufferType == "bufferType1") {
readOnlySharedBuffer = e.getBuffer();
} else {
sharedBuffer = e.getBuffer();
}
DisplaySharedBufferData(e.getBuffer());
}
function ReleaseBuffer(buffer) {
window.chrome.webview.releaseBuffer(buffer);
}
Eigenschaften
additional |
Ein Objekt, das das Ergebnis der Analyse des |
source | Die Quelle des Ereignisses ist das |
Methoden
get |
Gibt ein |
Details zur Eigenschaft
additionalData
Ein Objekt, das das Ergebnis der Analyse des additionalDataAsJson
Parameters in CoreWebView2.PostSharedBufferToScript
als JSON-Zeichenfolge ist. Diese Eigenschaft ist undefined
, wenn additionalDataAsJson
oder die leere Zeichenfolge ist nullptr
.
additionalData: any;
Eigenschaftswert
any
source
Die Quelle des Ereignisses ist das chrome.webview
-Objekt.
source: WebView;
Eigenschaftswert
Details zur Methode
getBuffer()
Gibt ein ArrayBuffer
-Objekt zurück, bei dem der Sicherungsinhalt aus dem freigegebenen Puffer an CoreWebView2.PostSharedBufferToScript
übergeben wird. Wenn CoreWebView2.PostSharedBufferToScript
aufgerufen wurde, wobei der Puffer auf ReadOnly
festgelegt ist, ist nur Lesezugriff auf den Puffer zulässig. Wenn Sie versuchen, den Inhalt in einem schreibgeschützten Puffer zu ändern, führt dies zu einer Zugriffsverletzung im WebView-Rendererprozess und stürzt den Rendererprozess ab.
getBuffer(): ArrayBuffer;
Gibt zurück
ArrayBuffer
Ein ArrayBuffer
über dem freigegebenen Puffer, der an CoreWebView2.PostSharedBufferToScript
übergeben wird.