Перезаписывать документ iframe.write - PullRequest
3 голосов
/ 13 февраля 2010

Для моих собственных целей ( кашель отложенная загрузка рекламного сценария) я перезаписываю функцию document.write, чтобы буферизовать вывод сценария, записать его в div и восстановить нативный документ . напиши, когда я закончу.

Псевдокод выглядит примерно так:

  • сохранить исходный код document.write
  • переопределить document.write
  • eval и буферный вывод скрипта
  • когда скрипт будет выполнен, запишите буфер в
  • восстановить родной document.write

Проблема возникает на шаге, выделенном жирным шрифтом - одна из строк рекламного сценария создает iframe и вызывает

frame.document.write

Проходя через Firebug, я убедился, что этот document.write является нативным кодом JS, а не моей перезаписанной версией.

Есть ли способ перезаписать document.write для ВСЕХ окон и фреймов? Это ограниченная проблема, но я не уверен, как заставить мой document.write преобладать.

1 Ответ

5 голосов
/ 13 февраля 2010

Каждое окно - это уникальная и драгоценная снежинка, и как таковая она принесена в этот мир с определенными дарами от Создателя. Среди этих даров есть свои собственные объекты «окна» и «документа», такие же свежие и чистые, как кристально чистые первобытные океаны на заре времени.

Точно так же все основные классы Javascript (Function, Array, RegExp и т. Д.) Все "чистые". Вот почему, когда вы загружаете страницу в iframe, если эта страница имеет свои собственные локальные скрипты, которые, например, полагаются на jQuery, она должна импортировать свою собственную копию библиотеки.

...