SharedBufferReceivedEvent class
Objet d’événement pour l’événement chrome.webview.sharedbufferreceived
. Cet événement est distribué quand CoreWebView2.PostSharedBufferToScript
est appelé avec succès.
- Extends
Remarques
Exemples
L’exemple suivant envoie des données à un script pour une consommation unique en lecture seule.
Tout d’abord, dans le code de l’application hôte native, définissez les données dans la mémoire partagée :
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();
Dans le document HTML, abonnez-vous à l’événement sharedbufferreceived et gérez-le.
Ensuite, dans le document HTML, abonnez-vous à, puis gérez l’événement sharedbufferreceived
:
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);
}
Propriétés
additional |
Objet qui est le résultat de l’analyse du paramètre sur |
source | La source de l’événement est l’objet |
Méthodes
get |
Retourne un |
Détails de la propriété
additionalData
Objet qui est le résultat de l’analyse du paramètre sur additionalDataAsJson
CoreWebView2.PostSharedBufferToScript
en tant que chaîne JSON. Cette propriété sera undefined
si additionalDataAsJson
est nullptr
ou la chaîne vide.
additionalData: any;
Valeur de propriété
any
source
Détails de la méthode
getBuffer()
Retourne un ArrayBuffer
objet avec le contenu de stockage de la mémoire tampon partagée passé à CoreWebView2.PostSharedBufferToScript
. Si CoreWebView2.PostSharedBufferToScript
a été appelé avec la mémoire tampon définie sur ReadOnly
, seul l’accès en lecture est autorisé à la mémoire tampon. Si vous essayez de modifier le contenu d’une mémoire tampon en lecture seule, cela provoque une violation d’accès dans le processus du renderer WebView et bloque le processus du renderer.
getBuffer(): ArrayBuffer;
Retours
ArrayBuffer
sur ArrayBuffer
la mémoire tampon partagée passée à CoreWebView2.PostSharedBufferToScript
.