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 ReadOnlyfestgelegt 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.