我使用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_framecreated
API来捕获ICoreWebView2Frame2
对象。
然后使用ICoreWebView2Frame2
的add_WebMessageReceived
neneneba 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