Compartilhar via


SharedBufferReceivedEvent class

Objeto de evento para o chrome.webview.sharedbufferreceived evento. Este evento é enviado quando CoreWebView2.PostSharedBufferToScript é chamado com êxito.

Extends

Comentários

Exemplos

O exemplo seguinte envia dados para o script para consumo único e só de leitura.

Primeiro, no código da aplicação anfitriã nativa, defina os dados para a memória partilhada:

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

No documento HTML, subscreva e processe o evento sharedbufferreceived.

Em seguida, no documento HTML, subscreva e, em seguida, processe o 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);
}

Propriedades

additionalData

Um objeto que é o resultado da análise do additionalDataAsJson parâmetro como CoreWebView2.PostSharedBufferToScript uma cadeia JSON. Esta propriedade será undefined se additionalDataAsJson for nullptr ou a cadeia vazia.

source

A origem do evento é o chrome.webview objeto .

Métodos

getBuffer()

Devolve um ArrayBuffer objeto com o conteúdo de cópia de segurança da memória intermédia partilhada transmitido para CoreWebView2.PostSharedBufferToScript. Se CoreWebView2.PostSharedBufferToScript tiver sido chamado com a memória intermédia definida como ReadOnly, só é permitido acesso de leitura à memória intermédia. Se tentar modificar o conteúdo numa memória intermédia só de leitura, isso causará uma violação de acesso no processo de composição do WebView e falhará o processo do compositor.

Detalhes da propriedade

additionalData

Um objeto que é o resultado da análise do additionalDataAsJson parâmetro como CoreWebView2.PostSharedBufferToScript uma cadeia JSON. Esta propriedade será undefined se additionalDataAsJson for nullptr ou a cadeia vazia.

additionalData: any;

Valor da propriedade

any

source

A origem do evento é o chrome.webview objeto .

source: WebView;

Valor da propriedade

Detalhes do método

getBuffer()

Devolve um ArrayBuffer objeto com o conteúdo de cópia de segurança da memória intermédia partilhada transmitido para CoreWebView2.PostSharedBufferToScript. Se CoreWebView2.PostSharedBufferToScript tiver sido chamado com a memória intermédia definida como ReadOnly, só é permitido acesso de leitura à memória intermédia. Se tentar modificar o conteúdo numa memória intermédia só de leitura, isso causará uma violação de acesso no processo de composição do WebView e falhará o processo do compositor.

getBuffer(): ArrayBuffer;

Retornos

ArrayBuffer

Uma ArrayBuffer memória intermédia partilhada passou para CoreWebView2.PostSharedBufferToScript.