Web浏览器控制C#奇怪的行为

时间:2010-03-26 09:42:43

标签: c# webbrowser-control

我正在为webbrowser.DocumentText设置一个HTML字符串值。问题是,有时它是有效的,有时它会挂断,而不是通过文档完成事件。可能是什么问题?

请尽快回复。

谢谢,

Jepe

1 个答案:

答案 0 :(得分:1)

只是一个想法:现在所有的web-'dynam-ism',页面永远不会处于“完全加载”的状态。在DocumentComplete之后,触发页面的OnLoad事件,然后触发放置在这样的事件中的任何脚本,然后可以使用javascript计时器来启动某些资源的下载/上传,或者使用AJAX进行页面更改等。 / p>

我相信AJAX调用可能会导致WebBrowser控件出现各种看不见的问题;因为AJAX可以在加载页面时导致多个Navigating()事件触发。因此,您的应用会在该页面上遇到多个DocumentCompleted事件。

可能的解决方案是监控页面更改并尝试找出可能已更改的内容。要做到这一点,您可能需要研究Notify方法。

  

发生更改时由MSHTML调用   在标记的内容中   与之相关的容器   相关联。

Thisthis讨论可以帮助您提出以下内容:

HtmlElement target = _webBrowser.Document.GetElementById("somedivthatwillbepopulatedbytheajaxrequest");

if (target != null)
{ 
    target.AttachEventHandler("onpropertychange", new EventHandler(handler));
}