SharedBufferReceivedEvent class
chrome.webview.sharedbufferreceived
イベントのイベント オブジェクト。 このイベントは、 CoreWebView2.PostSharedBufferToScript
が正常に呼び出されたときにディスパッチされます。
- Extends
注釈
例
次の例では、1 回限りの読み取り専用の使用のためにデータをスクリプトに送信します。
まず、ネイティブ ホスト アプリ コードで、共有メモリにデータを設定します。
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();
HTML ドキュメントで、sharedbufferreceived イベントをサブスクライブして処理します。
次に、HTML ドキュメントで をサブスクライブし、 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);
}
プロパティ
additional |
|
source | イベントのソースは、 |
メソッド
get |
|
プロパティの詳細
additionalData
additionalDataAsJson
パラメーターを解析して JSON 文字列としてCoreWebView2.PostSharedBufferToScript
した結果のオブジェクト。 このプロパティは、additionalDataAsJson
がnullptr
または空の文字列である場合にundefined
されます。
additionalData: any;
プロパティ値
any
source
メソッドの詳細
getBuffer()
CoreWebView2.PostSharedBufferToScript
に渡された共有バッファーからのバッキング コンテンツを含むArrayBuffer
オブジェクトを返します。 バッファーが ReadOnly
に設定された状態でCoreWebView2.PostSharedBufferToScript
が呼び出された場合、バッファーへの読み取りアクセスのみが許可されます。 読み取り専用バッファー内のコンテンツを変更しようとすると、WebView レンダラー プロセスでアクセス違反が発生し、レンダラー プロセスがクラッシュします。
getBuffer(): ArrayBuffer;
戻り値
ArrayBuffer
CoreWebView2.PostSharedBufferToScript
に渡される共有バッファーに対するArrayBuffer
。