WPF WebBrowser - “DOMChanged”事件还有其他选择吗?

时间:2012-06-24 12:17:53

标签: c# wpf dom webbrowser-control awesomium

我尝试过内置的WPF WebBrowser(.NET ActiveX Wrapper),Awesomium.NET和Chromium.NET。

我不确定我是否只是错过了这里的内容,但是当DOM发生变化以便我的C#代码可以执行时,我不知道是否有任何方法可以引发事件。如果可以的话,我想避免让计时器检查/比较DOM每次更改......

所以,我只是想知道我是否错过了那些允许我做我想做的控件,或者如果没有,是否有任何替代/方法来进行DOMChanged事件?

1 个答案:

答案 0 :(得分:2)

我不相信默认使用这些控件有任何方法(尽管我从未使用过Chromium.NET)。

您可以尝试做的一件事是使用JavaScript来检测DOM更改。您可以让您的应用程序注册一个回调函数并编写JavaScript本身。这是Awesomium语法中的一个粗略示例:

myControl.CreateObject("JSCallback");
myControl.SetObjectCallback("JSCallback", "handleDOMChange", OnDOMChange);
myControl.ExecuteJavascript(
  //this is where you would write your Javascript method that would detect DOM change and have it execute this handler method
  //Here's a post with some info on this (ignore cross-browser compatibility issues since it's all running within Awesomium): http://stackoverflow.com/questions/3219758/detect-changes-in-the-dom
  function DOMChangeDetected () 
  {
    JSCallback.handleDOMChange();
  }
);

private void OnDOMChange(object sender, JSCallbackEventArgs eventArgs)
{
  //.NET event triggered from JS DOM change detection
}