Freigeben über


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

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 .

source

Die Quelle des Ereignisses ist das chrome.webview -Objekt.

Methoden

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.

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.