2 Stimmen

Ajax-Aufrufe von IE BHO überwachen

Ich versuche, einen Weg zu finden, um Änderungen auf einer Seite von einem BHO zu erkennen. Für die Firefox-Version des Plugins, das ich verwende DomNodeInserted aber das ist im IE nicht verfügbar. Ich habe mir auch die Verwendung von onpropertychange aber damit können Sie nur ein einzelnes Element überwachen (keine Kinder).

Ich frage mich nun, ob es möglich ist, zu überwachen, wann AJAX-Anforderungen aufgerufen werden. Wenn ja, kann ich die Änderungen an der Seite vornehmen, nachdem die AJAX-Anfrage abgeschlossen ist. Das einzige Problem ist, dass ich keine Möglichkeit finde, dies zu tun.


Hier ist mein bisheriger Versuch, der auf den Vorschlägen von Jeffamaphone basiert. Er funktioniert nicht, aber vielleicht hilft er jemandem, sich zu erinnern.

    public class ChangeMonitor : IHTMLChangeSink {
        public void Notify()
        {
            Trace.WriteLine("notified");
        }
    }

    void registerMonitor()
    {
        HTMLDocument document = _webBrowser2.Document;

        ChangeMonitor monitor = new ChangeMonitor();
        IHTMLChangeSink changeSink = monitor;
        IHTMLChangeLog changeLog = null;

        ((IMarkupContainer2)document).CreateChangeLog(changeSink, out changeLog, 1, 1);
    }

1voto

Paul Sweatte Punkte 23456

Für IE, bei Lesezustandsänderung wird als Äquivalent zu DomNodeInserted funktionieren. Ein DHTML-Verhalten muss über htc an das Element angehängt werden, aber die htc-Datei muss nicht existieren:

document.documentElement.addBehavior("foo.htc");
document.documentElement.attachEvent("onreadystatechange", Notify);

En BHO kann das Skript einschleusen um das Ereignis zu behandeln.

0voto

i_am_jorf Punkte 52346

Ich habe es nie getan, aber meine Theorie ist, dass man die IMarkupContainer2::CreateChangeLog() .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X