[编辑]
我已经尝试了两种解决方法(在发布此帖子之前)。他们两个都没有工作。执行流永远不会进入它(是的,应该是..)。
-我猜应该有一些错误,看不见的错误。这样可以防止执行流进入其中。该程序显示一些屏幕,尽管它看起来像正常屏幕,但不是。这是一半的地方。
if (e.Url.AbsolutePath == (sender as WebBrowser).Url.AbsolutePath)
或者
if (webBrowser1.ReadyState == WebBrowserReadyState.Complete)
[结束编辑]
我在Google上搜索了“胃”一词,并用Yellow_color对其进行了高亮显示。
我取得了不错的成绩。
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.
}
现在,我在Local_Website上使用了相同的代码。
这次,我有无限循环。
我猜搜索文本框会一次又一次地运行。
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();
}
有什么好的提示吗?我怎么有我的目标?
您的问题是DocumentCompleted()多次触发。它可以在Google上使用,因为与您尝试加载的网站相比,他们的网站“更简单”(没有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();
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句