如何在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?

如何在Webkit.Net中选择用户控件WebKitBrowser的所有文本?

尝试使用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中。