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
| additional |
Objeto que es el resultado de analizar el |
| source | El origen del evento es el |
Métodos
| get |
Devuelve un |
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
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.