[编辑]
我已经尝试了两个解决方法(在发布此帖子之前)。 他们俩都没有工作。 执行流程从未进入过它(是的,应该是......)。
- 我想,应该有一些错误,不可见的错误。这使得exectuion流入其中。该程序显示一些屏幕,虽然它看起来像一个普通的屏幕,但事实并非如此。这是一个半场。
if (webBrowser1.ReadyState == WebBrowserReadyState.Complete)
或
public static string myTerm = "stomach";
private void Form1_Load(object sender, EventArgs e)
{
webBrowser1.Navigate("https://www.google.co.kr/search?&q=" + myTerm);
webBrowser1.ScriptErrorsSuppressed = true;
WindowState = FormWindowState.Maximized;
}
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
IHTMLDocument2 myDoc = webBrowser1.Document.DomDocument as IHTMLDocument2;
StringBuilder myContents = new StringBuilder(myDoc.body.outerHTML);
string myColoring = "<span style='background-color:yellow'>" + myTerm + "</span>";
myContents.Replace(myTerm, myColoring);
Regex myRex = new Regex(myColoring);
myDoc.body.innerHTML = myRex.Replace(myContents.ToString(), myTerm, 6);
// I do not want to see codes at search_textbox itself, so I figured out '6' is a good number.
}
[编辑结束]
我在谷歌搜索过“胃”这个词,并用黄色颜色点亮了它。
我的成绩很好。
public static string myTerm = "stomach";
private void Form1_Load(object sender, EventArgs e)
{
webBrowser1.Navigate("http://www.kmle.co.kr/search.php?Search=" + myTerm);
webBrowser1.ScriptErrorsSuppressed = true;
WindowState = FormWindowState.Maximized;
}
int myCount = 0;
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
if (myCount == 10) // I do not want endless loop.
return;
myCount++;
IHTMLDocument2 myDoc = webBrowser1.Document.DomDocument as IHTMLDocument2;
StringBuilder myContents = new StringBuilder(myDoc.body.outerHTML);
string myColoring = "<span style='background-color:yellow'>" + myTerm + "</span>";
myContents.Replace(myTerm, myColoring);
myDoc.body.innerHTML = myContents.ToString();
}
现在,我在Local_Website上使用了相同的代码。
这一次,我有无限循环。
我猜serach文本框一次又一次。
takeWhile
有什么好的提示吗?我怎样才能实现目标?
答案 0 :(得分:0)
你的问题是多次触发DocumentCompleted()。 它适用于谷歌,因为他们的网站“更简单”(没有ajax或隐藏框架)与你试图加载的网站形成鲜明对比。
尝试将代码限制为仅在文档实际完成加载时调用
if ( (e.Url.AbsolutePath == (sender as WebBrowser).Url.AbsolutePath) )
{
//do your magic here.
};
所以你的文档完整功能应如下所示:
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
if (e.Url.AbsolutePath == (sender as WebBrowser).Url.AbsolutePath)
{
IHTMLDocument2 myDoc = webBrowser1.Document.DomDocument as IHTMLDocument2;
StringBuilder myContents = new StringBuilder(myDoc.body.outerHTML);
string myColoring = "<span style='background-color:yellow'>" + myTerm + "</span>";
myContents.Replace(myTerm, myColoring);
myDoc.body.innerHTML = myContents.ToString();
}
}