覆盖iframe的document.write

时间:2010-02-13 01:32:15

标签: javascript iframe scope document.write

出于我自己的目的(咳嗽延迟加载广告脚本),我覆盖了document.write函数,以缓冲脚本的输出,将其写入div,并恢复本机document.write,当我完成。

伪代码看起来像这样:

  • 保存本机代码document.write
  • 重新定义document.write
  • 脚本的eval和缓冲输出
  • 脚本完成后,将缓冲区写入
  • 恢复原生document.write

问题出现在粗体步骤中 - 广告脚本中的一行创建了iframe,然后调用

frame.document.write

单步执行Firebug,我已经验证此document.write是本机JS代码,而不是我的覆盖版本。

有没有办法覆盖所有窗口和框架的document.write?这是一个范围问题,但我不确定如何强制我的document.write占上风。

1 个答案:

答案 0 :(得分:5)

每一扇窗户都是独特而珍贵的雪花,因此带着创造者的某些礼物进入这个世界。这些礼物中有自己的“窗口”和“文件”物品,像黎明时代的水晶般清澈的原始海洋一样清新纯净。

同样,所有基本的Javascript“类”(Function,Array,RegExp等)都是“干净的”。这就是为什么当你将一个页面加载到iframe时,如果该页面有自己的依赖于(例如)jQuery的本地脚本,它必须导入它自己的库副本。