SharedBufferReceivedEvent class
Event do chrome.webview.sharedbufferreceived evento. Esse evento é despachado quando CoreWebView2.PostSharedBufferToScript é chamado com êxito.
- Extends
Comentários
Exemplos
O exemplo a seguir envia dados para o script para consumo único somente leitura.
Primeiro, no código do aplicativo host nativo, defina os dados na memória compartilhada:
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, assine e manipule o evento sharedbufferreceived.
Em seguida, no documento HTML, assine e manipule 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
| additional |
Um objeto que é o resultado da análise |
| source | A origem do evento é o |
Métodos
| get |
Retorna um |
Detalhes da propriedade
additionalData
Um objeto que é o resultado da análise additionalDataAsJson do parâmetro CoreWebView2.PostSharedBufferToScript como uma cadeia de caracteres JSON. Essa propriedade será undefined if additionalDataAsJson is nullptr ou a cadeia de caracteres vazia.
additionalData: any;
Valor da propriedade
any
source
Detalhes do método
getBuffer()
Retorna um ArrayBuffer objeto com o conteúdo de apoio do buffer compartilhado passado para CoreWebView2.PostSharedBufferToScript. Se CoreWebView2.PostSharedBufferToScript foi chamado com o buffer definido como ReadOnly, somente o acesso de leitura terá permissão para o buffer. Se você tentar modificar o conteúdo em um buffer somente leitura, isso causará uma violação de acesso no processo de renderização do WebView e falhará o processo de renderização.
getBuffer(): ArrayBuffer;
Retornos
ArrayBuffer
Um ArrayBuffer sobre o buffer compartilhado passado para CoreWebView2.PostSharedBufferToScript.