我已经尝试过内置的 WPF WebBrowser (.NET ActiveX Wrapper)、Awesomium.NET 和 Chromium.NET。
我不确定我是否在这里遗漏了一些东西,但我不知道是否有任何方法可以在 DOM 更改时引发事件,以便我的 C# 代码可以执行。如果可以的话,我想避免每次都有计时器检查/比较 DOM 的更改...
所以,我只是想知道我是否错过了这些控件中允许我做我想做的事情的东西,或者如果没有,是否有任何替代/方法来拥有 DOMChanged 事件?
我已经尝试过内置的 WPF WebBrowser (.NET ActiveX Wrapper)、Awesomium.NET 和 Chromium.NET。
我不确定我是否在这里遗漏了一些东西,但我不知道是否有任何方法可以在 DOM 更改时引发事件,以便我的 C# 代码可以执行。如果可以的话,我想避免每次都有计时器检查/比较 DOM 的更改...
所以,我只是想知道我是否错过了这些控件中允许我做我想做的事情的东西,或者如果没有,是否有任何替代/方法来拥有 DOMChanged 事件?
我不相信默认情况下使用这些控件可以做到这一点(尽管我从未使用过 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
}