【发布时间】:2021-09-14 08:47:10
【问题描述】:
我已将旧的 C++ MFC 应用程序升级为使用基于 Edge 的 WebView2 Web 浏览器控件。否则我可以正常工作,剩下的问题之一是通过主 MFC 应用程序 Edit-Find 菜单项或通过 Ctrl+F(也被 MFC 框架拦截)在其中打开“查找”对话框。我现在拥有的是:
m_webView->ExecuteScript(L"window.find(\"\", 0, 0, 0, 0, 0, 1);");
其中m_webView 是指向ICoreWebView2 接口的指针。
问题在于,有时它确实会显示“查找”对话框,有时则不会。有时它会在页面刷新后执行,有时不会。当我从 cross 关闭“查找”对话框时,它通常会拒绝再次打开它。
我怎样才能让它正常运行?也许有一种方法不需要通过Javascript?
更新:它似乎只有在 Ctrl+F 击键以某种方式绕过 MFC 直接发送到 WebView2 控件时才有效。看起来上面的 Javascript 行从来没有工作过。那么或许有办法为WebView2控件模拟Ctrl+F?
【问题讨论】:
-
听起来像是焦点控制问题 - MFC 中最后一次获得焦点的控件都是 Ctrl+F 序列。
-
对,这主要是焦点问题,GotFocus 事件处理程序有时会将焦点从 webview2 控件上移开。似乎仍然没有办法让 Edit-Find 菜单项工作。是的,我知道菜单目前已经过时了……
标签: javascript c++ microsoft-edge webview2