Compartir a través de


SharedBufferReceivedEvent class

Objeto de evento para el chrome.webview.sharedbufferreceived evento. Este evento se envía cuando CoreWebView2.PostSharedBufferToScript se llama correctamente.

Extends

Comentarios

Ejemplos

En el ejemplo siguiente se envían datos al script para el consumo de solo lectura único.

En primer lugar, en el código de la aplicación host nativa, establezca los datos en la memoria compartida:

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();

En el documento HTML, suscríbase y controle el evento sharedbufferreceived.

A continuación, en el documento HTML, suscríbase a y, a continuación, controle el sharedbufferreceived evento:

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);
}

Propiedades

additionalData

Objeto que es el resultado de analizar el additionalDataAsJson parámetro en CoreWebView2.PostSharedBufferToScript como una cadena JSON. Esta propiedad será undefined si additionalDataAsJson es nullptr o la cadena vacía.

source

El origen del evento es el chrome.webview objeto .

Métodos

getBuffer()

Devuelve un ArrayBuffer objeto con el contenido de respaldo del búfer compartido pasado a CoreWebView2.PostSharedBufferToScript. Si CoreWebView2.PostSharedBufferToScript se llamó a con el búfer establecido en ReadOnly, solo se permite el acceso de lectura al búfer. Si intenta modificar el contenido en un búfer de solo lectura, provocará una infracción de acceso en el proceso del representador de WebView y bloqueará el proceso del representador.

Detalles de las propiedades

additionalData

Objeto que es el resultado de analizar el additionalDataAsJson parámetro en CoreWebView2.PostSharedBufferToScript como una cadena JSON. Esta propiedad será undefined si additionalDataAsJson es nullptr o la cadena vacía.

additionalData: any;

Valor de propiedad

any

source

El origen del evento es el chrome.webview objeto .

source: WebView;

Valor de propiedad

Detalles del método

getBuffer()

Devuelve un ArrayBuffer objeto con el contenido de respaldo del búfer compartido pasado a CoreWebView2.PostSharedBufferToScript. Si CoreWebView2.PostSharedBufferToScript se llamó a con el búfer establecido en ReadOnly, solo se permite el acceso de lectura al búfer. Si intenta modificar el contenido en un búfer de solo lectura, provocará una infracción de acceso en el proceso del representador de WebView y bloqueará el proceso del representador.

getBuffer(): ArrayBuffer;

Devoluciones

ArrayBuffer

Que ArrayBuffer se pasa a través del búfer compartido a CoreWebView2.PostSharedBufferToScript.