我处于需要动态添加广告脚本标签的情况。
广告本身只是一个简单的脚本标记,带有指向广告服务器的 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/