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
.