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",...)
?
答案 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
。