gpt4 book ai didi

javascript - 在指定范围内覆盖 document.write?

转载 作者:行者123 更新时间:2023-11-30 10:22:01 36 4
gpt4 key购买 nike

我需要重写 document.write 以便呈现从 google 的双击返回时包含在该函数中的广告。由于标准 document.write 完全替换了页面内容,我覆盖了它以将广告内容附加到现有元素。但是,我想确保此覆盖仅在广告呈现期间发生,并且页面上可能存在的任何其他 document.writes 不受影响。这可以通过关闭来确定范围或完成吗?我不太了解这是如何完成的。

到目前为止我有:

(function(){
function RenderAd(adURL,Element)
{
document.write = function(adContent) {
Element.append(adContent);
}
$.getScript(adURL);
}
RenderAd('http://ad.doubleclick.net/N4890/adj/za.za.home/main;pos=300top;tile=2;sid=Amazon;sz=300x250;ord=12247707435800953?',$('#HeaderDiv'));
}(document.write));

但是当我之后调用 document.write('test'); 时,它仍然使用我的 document.write 版本。

最佳答案

document.write 的作用域在 HTML 文档中,因此如果您更改它,对它的任何后续调用也将执行覆盖的版本。您可以尝试将原始 document.write 函数存储在临时变量中,覆盖它,然后在完成函数调用后替换它,但是由于对 document.write 的调用是通过回调进行的并且是异步的,并且由于您可能正在以这种方式在一个页面上加载多个广告,您无法预测何时应该恢复原始文档。写。

在服务调用返回包含在 document.write() 调用中的 HTML 的情况下,通常所做的是将其加载到单独的 iframe 中,该框架将拥有自己的文档对象。

因此,如果可以,请为每个广告创建一个 iframe,并将您调用 Google 的 doubleclick 时返回的数据加载到 iframe 中。 document.write 将为该 iframe 创建一个缓冲区,不会影响父 HTML。

关于javascript - 在指定范围内覆盖 document.write?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21141839/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com