Как добавить <DIV>в WPF WebBrowser Control для перекрытия всего содержимого веб-страницы? - PullRequest
1 голос
/ 09 февраля 2012

Что я хочу сделать, так это когда WPF WebBrowser загружает страницу. Я просто хочу поместить поверх содержимого страницы немного , чтобы предотвратить любые события клика от пользователя на загруженной странице.

Идея таковакаким-то образом вставить это, включая стиль, в загруженную страницу ...

Возможно ли это сделать?

Если да, то как это можно реализовать в C #?

1 Ответ

3 голосов
/ 09 февраля 2012

Можете ли вы перейти на javascript: URL? Вероятно, это дешевый способ сделать это, и я верю, что это то, чем я заканчивал в прошлом.

Есть и другой способ прямого доступа к DOM. Он включает в себя доступ к WebBrowser.Document, который вы можете привести к типу COM. Мне нужно будет связаться с вами по точной технике - я ее где-то сохранил - но есть небольшой намек на MSDN .

Edit:

Самый простой способ проверить JavaScript - сделать что-то вроде:

webBrowser.Navigate("javascript:alert('Test');")

Если появляется диалоговое окно с текстом Test без исчезновения веб-страницы, оно работает. Вы можете вставить любой JavaScript, какой захотите, при условии, что тест сработал. Например:

webBrowser.Navigate("javascript:void(document.body.innerHTML = '<div>Test</div>' + document.body.innerHTML);");

Правильный путь

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

  1. Ссылка на ShDocVw.dll.
  2. Добавить оператор using для пространства имен mshtml.
  3. Приведите объект WebBrowser.Document к интерфейсу mshtml.IHTMLDocument2.
  4. Это должно дать вам доступ к DOM документа, так что вы сможете использовать IntelliSense, чтобы выяснить, что делать дальше. Тем не менее, вы будете использовать COM, так что это будет немного болезненно и потребует много работы с интерфейсами.

Редактировать: Этот вопрос имеет несколько хороших примеров. Я бы использовал простое приведение вместо ключевого слова as. obj as Something является синтаксическим сахаром для obj is Something ? (Something)obj : null. Этот дополнительный тест здесь действительно не нужен.

...