我想知道为什么广告仍然使用document.write方法将添加内容插入页面
<script language="javascript" type="text/javascript">
document.write("<script type='text/javascript' src='http://addomain/someadd.js'><\/sc" + "ript>");
</script>
为什么我不能放
<script type='text/javascript' src='http://addomain/someadd.js'></script>
取代广告?
答案 0 :(得分:8)
传统的脚本标记会在加载和执行时阻止页面。使用document.write加载的脚本将异步工作。这就是您在广告或分析中看到这一点的原因,因为此类脚本不会直接影响页面内容。
答案 1 :(得分:5)
我与网络广告公司合作,从我所听到的,某些浏览器(不知道哪些浏览器)将允许您将脚本标记放入页面,但不允许您自动执行他们的内容。
因此,要实现此目的,您需要将脚本标记分解为多个部分,以便浏览器不会将其视为脚本标记,而是将其视为任何旧的HTML数据。然后,当连续处理DOM时,在写出脚本标记之后,它评估的下一个东西就是......嘿,你刚写完的那个脚本标记。
此时评估并执行脚本标记。
答案 2 :(得分:5)
这些document.write注入的脚本通常会附加动态字符串以消除缓存,或者将有关客户端的一些信息发送到广告服务器。我怀疑你的例子是从这样的
开始的document.write("<script type='text/javascript' src='http://addomain/someadd.js?"+extrastuff+"'><\/sc" + "ript>");
但随着时间的推移进行了调整,或被不了解extrastuff位的人复制和修改。但是正如你所写的那样没有区别:你在问题中引用的两种方式在功能上是相同的。
答案 3 :(得分:2)
我更正了,doc.write创建的脚本是阻止 - 比我更糟糕但是嘿:) - 但作为adblock避免它的真的弱,所以我只能总结它是一种SOP机制,用于动态地将params添加到过度使用的脚本请求中。
避免脚本阻止孩子时使用DOM插入技术。
答案 4 :(得分:1)
如果禁用了活动脚本,此方法可以避免加载外部脚本。
答案 5 :(得分:0)
我不确定,但他们可能会使用它,因此网站上的所有内容都会被加载并首先显示给用户,然后加载并显示广告。
答案 6 :(得分:0)
要与正则表达式匹配并删除很容易:
<script type='text/javascript' src='http://addomain/someadd.js'></script>
但另一个更复杂,可以用不同的格式编写。
我认为这就是原因。
答案 7 :(得分:0)
application/xml+xhtml
为他的网站提供服务,那么document.write()
根本就不起作用。
答案 8 :(得分:0)
write() 方法主要用于测试:如果在一个 HTML 文档完全加载后使用它,它将删除所有现有的 HTML
答案 9 :(得分:-2)
一种方法可以减少他们的添加被阻止的方式。