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

时间:2013-04-02 08:30:15

标签: c# .net webkit webbrowser-control

WebKitBrowser中有一个方法SelectedText,但没有SelectAll。有没有办法让我做以下事情:

string GetAllTextOfBrowserAsPlainText(WebKitBrowser webKitBrowser)
{
    webKitBrowser.SelectAll(); //Doesn't exist
    return webKitBrowser.SelectedText;
}

我的目标是完全呈现网页(包括样式),然后在平面文本中复制网页内容,就好像我在浏览器中使用了复制/粘贴一样。

获取InnerText或直接使用HTML不是一种选择。

我尝试使用带有WebBrowser1.Document.ExecCommand的WebBrowser UC来捕获文本但是我无法使样式正常工作。我现在正在尝试WebKit,而且我非常接近得到我想要的东西。有帮助吗? WebKit是否存在ExecCommand("SelectAll",...)

2 个答案:

答案 0 :(得分:0)

尝试使用WebClient

       using (WebClient wc = new WebClient())
      string mystring= wc.DownloadString("http://yoururl.com");

答案 1 :(得分:0)

我通过在下载的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