1

WebKitBrowser 中有一个方法SelectedText,但是没有SelectAll. 有没有办法让我做如下的事情:

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

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

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

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

4

2 回答 2

0

尝试使用 WebClient

       using (WebClient wc = new WebClient())
      string mystring= wc.DownloadString("http://yoururl.com");
于 2013-04-02T09:37:02.047 回答
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.

于 2013-04-05T07:33:08.693 回答