Мониторинг вызовов ajax из IE BHO - PullRequest
2 голосов
/ 12 января 2011

Я пытаюсь найти способ обнаружить изменения на странице из BHO.Для версии плагина Firefox я использую DomNodeInserted, но это не доступно в IE.Я также рассмотрел использование onpropertychange, но это позволяет вам контролировать только один элемент (не дочерние элементы).

Теперь мне интересно, можно ли отслеживать, когда вызываются запросы AJAX.Если это так, я могу внести изменения в страницу после завершения запроса AJAX.Единственная проблема в том, что я не могу найти способ сделать это.


Вот моя попытка, основанная на предположениях Джеффамафона, она не работает, но, возможно, она пробудит чью-то память

    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);
    }

Ответы [ 2 ]

1 голос
/ 24 апреля 2012

Для IE onreadystatechange будет работать как эквивалент DomNodeInserted. Поведение DHTML должно быть присоединено к элементу через htc, но файл htc не должен существовать:

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

BHO может внедрить скрипт для обработки события.

0 голосов
/ 12 января 2011

Я никогда не делал этого, но моя теория такова, что вы можете использовать IMarkupContainer2 :: CreateChangeLog () .

...