Используйте mshtml HTMLDocument для изменения DOM и отображения в расширении браузера IE / BHO
Я работаю с C#.NET: mshtml.HTMLDocument, mshtml.HTMLImg и т. Д.
То, что я пытаюсь сделать, это изменить DOM и отразить изменения в браузере. например
HTMLDocument doc = WebBrowser.Document as HTMLDocument;
HTMLImg img;
for (int i = 0; i < doc.images.length; i++)
{
img = doc.images.item(i) as HTMLImg;
ProcessImg(ref img);
}
К сожалению, обработанное / измененное изображение не отображается в браузере. Я полагаю, что Ineed я хочу сохранить изображение локально и изменить атрибут src тега IMG. Но кроме того, что я не смог (помогите, пожалуйста!) Сделать это, я боюсь, что это также не будет отображаться. Как сказать браузеру обновить (при необходимости вообще)
Ура, ребята! Берт Какой подход вы бы выбрали?
2 ответа
Правильно, вы не можете изменить существующее изображение без изменения атрибута SRC. Вы должны поделиться своим неработающим кодом для этого, чтобы люди могли его увидеть.
Пожалуйста, имейте в виду, что написание расширений браузера для IE в.NET настоятельно не рекомендуется из соображений производительности и надежности.
Проверьте эту ссылку, определенно возможно изменить отображаемую страницу, так как я делаю это с плагином, над которым я работаю.
По сути, класс реализует IObjectWithSite и IOleCommandTarget, первый из которых позволяет вашему коду подписаться на действие просмотра, а второй подключает действие пользовательского интерфейса. Код в примере ссылки устанавливает / очищает HTMLDocument, который является фактическим документом, который вы хотите изменить.
редактировать: я думаю, что, несмотря на внешний вид, HTMLDocument находится не в пространстве имен mshtml, а на самом деле в System.Windows.Forms. R# говорит иначе, но все пространство имен mshtml похоже на упражнение в неправильном направлении путем косвенного перенаправления и нарушения пищеварения, добавленных для хорошей меры.