WebView2中的搜索功能

3

提前致谢!

在我的应用程序中,我嵌入了一个WebView2控件在WPF用户控件中。

有没有任何方式或解决方法可以帮助我在WebView2控件中搜索文本?我看到通过Ctrl + F打开搜索文本框。我的要求是通过自定义按钮单击调用此功能。

我发现微软提供的当前的WebView2预发行版SDK没有任何特定的查找或搜索功能。


2
我认为你将不得不使用 JavaScript,查找: window.find(): https://developer.mozilla.org/en-US/docs/Web/API/Window/find - Poul Bak
@PoulBak:我已经尝试了Window.Find(),但似乎不起作用。 - DotNetSpartan
1
这里有另一个可能适合您的JS解决方案:https://stackoverflow.com/questions/12445579/javascript-window-find-does-not-select-search-term - Poul Bak
2个回答

4

WebView2目前不支持您调用或以其他方式控制页面查找对话框,我不知道除在HTML文档中实现自己的页面查找样式外是否有任何解决方法。

如果您愿意,您可以在我们的WebView2反馈页面上打开一个功能请求问题。请告诉我们您想使用页面查找对话框做什么以及原因。谢谢!


1

我通过使用Winform类的SendKeys方法来实现这一点。 为了在WPF应用程序中能够使用Winform类,您首先必须在项目设置PropertyGroup中添加UseWindowsForms标记,以启用WindowsForms。

  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net6.0-windows</TargetFramework>
    <Nullable>enable</Nullable>
    <UseWPF>true</UseWPF>
    <UseWindowsForms>true</UseWindowsForms>
  </PropertyGroup>

接下来,在代码后台创建您的点击方法。首先,将焦点传递到WebView2元素,以便在执行按键模拟时,浏览器是活动元素。

this.browser.Focus();

然后,使用"{F3}"作为参数调用SendKeys.SendWait方法。
System.Windows.Forms.SendKeys.SendWait("{F3}");

因此,最终的结果是这样的:

private void openSearch(object sender, RoutedEventArgs e)
{
    this.browser.Focus();
    System.Windows.Forms.SendKeys.SendWait("{F3}");
}

就是这样。 在wpp中创建您的按钮,将上述方法添加到其点击属性中,运行应用程序并按下该按钮。浏览器搜索功能将打开。 请参见下面的示例

截图


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接