Событие рендеринга BHO

Я разрабатываю расширения IE с помощью BHO. В настоящее время я использую событие OnDocumentComplete, которое срабатывает после завершения загрузки страницы. Я хочу внедрить свой JavaScript при рендеринге HTML, чтобы можно было обновлять HTML на лету.

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

Пожалуйста, предоставьте ваши ценные данные, чтобы DOM можно было обновлять во время рендеринга.

Спасибо, Мейтри


person Maitrey684    schedule 24.04.2015    source источник
comment
У меня та же проблема, вы нашли решение для внедрения JS до того, как документ будет отмечен как завершенный?   -  person Renault    schedule 08.12.2015


Ответы (2)


Во время загрузки страницы вы можете использовать:

<script>
   window.onload = function(){
      /* DOM handling */ 
   }
</script>

чтобы выполнить Javascript, это то, что вы имели в виду?

person allu    schedule 24.04.2015
comment
Но как внедрить JavaScript с помощью события BHO? - person Maitrey684; 26.04.2015

вы можете выполнить свой javascript, используя IHTMLWindow2::execScript, вызываемый для объекта окна внутри обработчика OnDocumentComplete:

public void OnDocumentComplete(object pDisp, ref object URL)
{
  HTMLDocument document = (HTMLDocument)webBrowser.Document;
  IHTMLWindow2 parentWindow = document.parentWindow;
  parentWindow.execScript("alert('your javascript')");
}

где webBrowser - это объект класса WebBrowser, который вы установили в SetSite

person Miroshko    schedule 10.05.2015