gpt4 book ai didi

javascript - 如何处理页面加载后添加的脚本中的 document.write?

转载 作者:太空狗 更新时间:2023-10-29 13:11:23 25 4
gpt4 key购买 nike

我处于需要动态添加广告脚本标签的情况。

广告本身只是一个简单的脚本标记,带有指向广告服务器的 src 属性。然后运行的实际代码是两步考验:

首先,有一个document.write(),像这样:

document.write("<iframe id='lctopti2017041855' src='about:blank' style='visibility: hidden;' onload=\"this.style.visibility='visible';\" style='border: 0px; overflow-x: hidden;overflow-y: hidden; width: 100px; height: 400px;' width='100' height='400' scrolling='no' frameborder='0' allowtransparency='true'></iframe>");

接下来是:

document.getElementById('lctopti2017041855').src = 'http://www.reallylongurl.com/blah.php?whatever=whatever'

现在,在加载页面时运行 document.write() 似乎没问题;但我发现,如果我采用相同的初始标记并将其弹出到 $('#somediv').prepend() 中,例如,它会覆盖整个页面。

有什么办法可以解决这个问题吗? iframe id 和后续广告 url 始终是动态的,并在初始脚本标记从广告服务器请求 javascript 时生成。如果初始脚本标签包含我需要的所有信息,我可以简单地用 $('#anywhere').prepend() 或其他方式切换 document.write。我该如何解决这个问题,而不是从字面上抓取初始脚本加载的结果然后处理结果?

有没有办法阻止 document.write() 覆盖页面,而是只在调用它的地方写入?

最佳答案

这是我以前成功做过的事

var oldWrite = document.write;
var wHtml="";
document.write=function(str) {
wHtml+=str;
}
// load adcode
$('#somediv').prepend(wHtml);
// optionally reset
document.write = oldWrite;

如果广告代码也使用 document.write 加载脚本,这可能会失败。在那种情况下使用 iFrame,因为它将包含他们可以做的所有废话

关于javascript - 如何处理页面加载后添加的脚本中的 document.write?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13775185/

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