如何在Webkit.Net中选择用户控件WebKitBrowser的所有文本?
本文关键字:WebKitBrowser 文本 控件 用户 Webkit Net 选择 | 更新日期: 2023-09-27 18:07:05
在WebKitBrowser中有一个方法SelectedText
,但是没有SelectAll
。有没有一种方法可以让我做如下的事情:
string GetAllTextOfBrowserAsPlainText(WebKitBrowser webKitBrowser)
{
webKitBrowser.SelectAll(); //Doesn't exist
return webKitBrowser.SelectedText;
}
我的目标是渲染整个网页(包括样式),然后在平面文本中复制网页的内容,就像我在浏览器中使用复制/粘贴一样。
获取InnerText
或直接使用HTML不是一个选项。
我已经尝试了WebBrowser UC与WebBrowser1.Document.ExecCommand
捕获文本,但我无法让样式正常工作。我现在正在尝试WebKit,我很接近得到我想要的。任何帮助吗?ExecCommand("SelectAll",...)
是否存在于WebKit?
尝试使用WebClient
using (WebClient wc = new WebClient())
string mystring= wc.DownloadString("http://yoururl.com");
我通过在下载的html末尾添加javascript来解决这个问题。从代码中调用js是棘手的,因为它看起来像WebKit。Net在直接这样做时会遇到麻烦。下面的代码不是我的最终产品代码,但是可以帮助到任何在相同位置的人:
private WebKitBrowser _browser = ...;
private string _selectAllCopyScript = "<script>document.execCommand('SelectAll', false, null);document.execCommand('Copy', false, null); </script>";
private string _plain = ...;
Form1()
{
...
_browser.DocumentCompleted += OnDocumentCompleted;
}
private string GetAllTextOfBrowserAsPlainText(String html)
{
_browser.Focus();
_browser.DocumentText = html + _selectAllCopyScript; //Calls OnDocumentCompleted when done
}
private void OnDocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
_plain = Clipboard.GetText();
Clipboard.Clear();
}
我希望我能找到一个不需要使用剪贴板的解决方案。最后的纯文本复制的html存储在_plain
中。