WPF WebBrowser - Zijn er alternatieven met "DOMChanged" -gebeurtenissen?

Ik heb de ingebouwde wpf WebBrowser (.NET ActiveX Wrapper), Awesomium.NET en Chromium.NET geprobeerd.

Ik weet niet zeker of ik hier iets heb gemist, maar ik weet niet of er een manier is om een ​​afspraak te maken wanneer de DOM verandert, zodat mijn C# -code kan worden uitgevoerd. Ik wil vermijden dat ik elke keer een timer check/vergelijk de DOM voor wijzigingen als ik kan ...

Dus, ik vraag me gewoon af of ik iets in die besturingselementen heb gemist waardoor ik kan doen wat ik wil of zo niet, zijn er alternatieven/methoden om een ​​DOMChanged-evenement te hebben?

0

1 antwoord

Ik geloof niet dat dit standaard kan worden gedaan met die besturingselementen (hoewel ik Chromium.NET nog nooit heb gebruikt).

Een ding dat je zou kunnen doen is JavaScript gebruiken om DOM-wijzigingen te detecteren. U kunt uw toepassing een callback-functie laten registreren en het JavaScript zelf schrijven. Hier is een ruw voorbeeld in de syntaxis van 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
}
2
toegevoegd