AS3 AIR: как удалить HTML-элементы в HTMLLoader перед рендерингом? - PullRequest
1 голос
/ 24 декабря 2011

Я создаю собственный браузер Adobe Air.

Я хотел бы добавить функцию фильтра html, которая отключает JavaScript и iframe.

Если бы я мог получить HTML-код перед рендерингом, я бы удалил элементы тега с помощью регулярного выражения.

Полагаю, я могу что-то сделать с htmlloader при отправке htmlloader LocationChangeEvent.

Ответы [ 2 ]

3 голосов
/ 04 января 2012

Ким, вы можете перейти к HTML, используя что-то вроде этого:

myHtmlLoader.window.document.childNodes[0].innerHTML

но вам нужно убедиться, что вы не получите к нему доступ, пока документ не будет загружен (см. Выше), иначе он будет нулевым.

Когда я использую приведенный выше код при загрузке простого файла, я вижу это:

<body marginwidth="0" marginheight="0">hello world</body>

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

0 голосов
/ 24 декабря 2011

Вам нужно поймать Event.HTML_DOM_INITIALIZE на загрузчике. На данный момент html загружен, дерево DOM создано, скрипты еще не запущены. Затем вы можете получить window объект из загрузчика и изменить его дочернюю иерархию (обратите внимание, что это не удаление тегов с помощью регулярного выражения.)
Вы также можете загрузить загруженный html, проанализировать его как текст, применить фильтр и снова установить отфильтрованный текст в html, но затем вы получите еще одно событие HTML_DOM_INITIALIZE и риск повреждения html. Выбор за вами, конечно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...