Вопрос

Я работал над BHO/панелью инструментов, написанной на C#, которая прослушивает события HTML, возникающие на текущей веб-странице браузера.Решение включает в себя повторно используемый класс HtmlPageEventManager, цель которого — подписаться на заданный список событий HTML для каждой новой открываемой веб-страницы.Цель состоит в том, чтобы прикрепить обработчики, как только пользователь сможет начать взаимодействовать с элементами страницы, даже до завершения загрузки страницы.Использовать этот класс просто — просто вызовите конструктор:

var evts = new List() {
    HtmlEvent.onclick, HtmlEvent.ondblclick, HtmlEvent.onkeydown,
    HtmlEvent.onselectstart, HtmlEvent.onselectionchange,
    HtmlEvent.onfocus, HtmlEvent.onselect
};
new HtmlPageEventManager( this, evts, this.HtmlEventHandler );

Пожалуйста скачайте мое решение здесь чтобы попробовать и отправить мне отзыв.Не стесняйтесь использовать его в своих проектах, если найдете его полезным.Хотя он работает хорошо, бывают случаи, когда ему не удается прикрепить события.Мне было трудно точно определить эти обстоятельства.Поэтому мне могла бы пригодиться помощь в улучшении HtmlPageEventManager.

Ссылки на мои решения Спайсиесборки, но они не включены в загрузку выше, поэтому вам нужно будет получить их с сайта сайт SpicIE .Кстати, сейчас, наверное, самое время спросить:насколько популярен SpicIE?Есть ли лучший инструмент для использования?

Это было полезно?

Решение

Ага!Я преодолел проблему «Обновить», подписавшись на событие DownloadComplete BHO, где я снова вызываю свой вспомогательный метод «RegisterEventHandlers», который подключает обработчики событий HTML.Код jeffamaphone, на который ссылается, оказался полезным.Я включил идею переменной-члена «normalPageLoad» для условного вызова RegisterEventHandlers.я тоже посмотрела сопутствующее сообщение на форуме.Однако я не могу понять акцент на событии Loaded родительского окна.Я заработал свой код, даже не выполняя эту часть.В любом случае, я думаю, что HtmlPageEventManager теперь полностью функционален — постучите по дереву.Пожалуйста, сообщите мне, если вы обнаружите случай, в котором он все еще не выполняет свою работу.

Другие советы

Вы обнаружите, что не существует 100% -ного решения сделать это для IE во время загрузки страницы. Это не ваша вина: модель событий IE представляет собой гигантскую массу асинхронного кода спагетти, что делает его очень трудным для понимания. Если у вас есть решение на 95%, я говорю: будьте счастливы и двигайтесь дальше.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top