window.chrome.webview.postmessage从子html到主c++应用程序(webView2)



我使用WebView2在win32应用程序中显示html内容。我有parent.html,我在其中提供child.html的参考,比如-

<frameset id="myFrmset">
<frame id="myFrm" name="frmContent" src="child.html"></frame> 
</frameset> 

在child.html中:

<button id="samplebutton" onclick="postmessagetocode()">clickhere</button>
<script>
function postmessagetocode() {
window.chrome.webview.postmessage('clickSample');
}
</script>

在我的c++代码中,我正在加载parent.htm,并希望在m_webView->add_WebMessageReceived.中获得上面的消息"clickSample">

我面临的问题是:通过像上面这样做,我不会在代码中得到这个消息。如果我从parent.html发布任何消息,那么我可以得到它。但如果我喜欢从child.html发布消息,那么它永远不会涉及c++代码。

有办法这样做吗?是不是我需要先在parent.html上捕捉消息,然后再发布到c++?

谢谢。MChauhan

首先,您需要使用add_framecreatedAPI来捕获ICoreWebView2Frame2对象。

然后使用ICoreWebView2Frame2add_WebMessageReceivedneneneba API从该iframe获取web消息。

参考:

https://learn.microsoft.com/en-us/microsoft-edge/webview2/reference/win32/icorewebview2_4?view=webview2-1.0.1293.44#add_framecreated

https://learn.microsoft.com/en-us/microsoft-edge/webview2/reference/win32/icorewebview2frame2?view=webview2-1.0.1293.44#add_webmessagereceived

最新更新