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

前端之家收集整理的这篇文章主要介绍了javascript – 如何处理在加载页面后添加的脚本中的document.write?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我处于一种需要动态添加广告脚本标签的情况.

广告本身只是一个简单的脚本标签,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()是好的;但是我发现如果我使用相同的初始标签并将其弹出在$(‘somodiv)’prepend()之前,例如它将覆盖整个页面.

有什么办法来处理吗? iframe ID和随后的广告网址始终是动态的,并且在初始脚本标记从广告服务器请求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相关文章