Javascript:使用匿名函数重写凌乱的代码CDATA更快?

Javascript:使用匿名函数重写凌乱的代码CDATA更快?,javascript,anonymous-function,Javascript,Anonymous Function,我想重写广告商的剧本,因为它看起来一团糟。我不明白CDATA是什么意思 <script type="text/javascript"><!--<![CDATA[ document.write(unescape('%3C')+'script id="ADNET.LT.starchat.lt.Pixel_VisaAplinka" src="'+location.protocol+'//s2.ad.adocean.pl/_'+(new Date()).getTime()

我想重写广告商的剧本,因为它看起来一团糟。我不明白CDATA是什么意思

<script type="text/javascript"><!--<![CDATA[
    document.write(unescape('%3C')+'script id="ADNET.LT.starchat.lt.Pixel_VisaAplinka" src="'+location.protocol+'//s2.ad.adocean.pl/_'+(new Date()).getTime()+'/ad.js?id=W54MHZcb7Z4vrcQ10kJleC.24iQP2N39Uy9dCJXnEmb.A7/x='+screen.width+'/y='+screen.height+'" type="text/javascript"'+unescape('%3E%3C')+'/script'+unescape('%3E'));
//]]>--></script>

所以我把它交给了这样的人,只是我坚持了几件事:

<script type="text/javascript">
    var ad = document.createElement('script'); ad.type = 'text/javascript'; ad.async = true; ad.id = 'ADNET.LT.starchat.lt.Pixel_VisaAplinka'; ad.src = 'http://s2.ad.adocean.pl/' + new Date().getTime() + '/ad.js?id=W54MHZcb7Z4vrcQ10kJleC.24iQP2N39Uy9dCJXnEmb.A7/x=' + screen.width + '/y=' + screen.height;
</script>

var ad=document.createElement('script');ad.type='text/javascript';ad.async=true;ad.id='ADNET.LT.starchat.LT.Pixel_VisaAplinka';ad.src=http://s2.ad.adocean.pl/“+new Date().getTime()+”/ad.js?id=W54MHZcb7Z4vrcQ10kJleC.24iQP2N39Uy9dCJXnEmb.A7/x=”+screen.width+“/y=”+screen.height;
我应该在匿名函数中使用脚本吗?当我注意到现在每个人都像谷歌分析脚本和其他人一样使用它们时,它有什么不同或更好的地方


还有一件事,我需要在文档中插入我在ad变量中创建的脚本对象,但不是在head标记中,而是在脚本所在的元素中,我是否应该使用某个父属性?

您应该将代码包装在一个自动执行的匿名函数中,以对其他代码隐藏您的变量。
这样可以避免污染全局名称空间


您可以简单地将新的
元素附加到正文的末尾。

您应该将代码包装在一个自动执行的匿名函数中,以便对其他代码隐藏您的变量。
这样可以避免污染全局名称空间


你可以简单地把你的新的
元素附加到正文的末尾。

广告商倾向于这样做的另一个原因是假装广告拦截器。他们以奇怪的方式向页面添加脚本,这样就不会被检测为广告,因此广告就会显示出来。

广告商倾向于这样做的另一个原因是伪造广告拦截器。他们以奇怪的方式将脚本添加到页面中,这样它们就不会被检测为广告,因此广告将被显示。

如果第三方广告脚本完全依赖于(请参见链接文档的“注释”部分),则您可能无法“清理”代码必须符合现代JavaScript编码标准,因为此类代码取决于该函数在调用位置插入新HTML的行为(这样就可以将广告代码复制/粘贴到页面上所需的位置)

最接近的方法是将ad代码存储在变量中,然后在完成ad脚本后将其插入到您选择的容器中(jQuery有一种方法可以完成后者)


我会这么做:如果你的广告网络允许,只要把广告代码放在iframe中,如果你需要将广告代码与其他JavaScript“隔离”开来。与我对的回答相比。

如果第三方广告脚本依赖于(请参阅链接文档的注释部分),则很可能无法“清理”代码以符合现代JavaScript编码标准,因为此类代码取决于该函数在调用位置插入新HTML的行为(这样就可以将广告代码复制/粘贴到页面上所需的位置)

最接近的方法是将ad代码存储在变量中,然后在完成ad脚本后将其插入到您选择的容器中(jQuery有一种方法可以完成后者)


我会这么做:如果您的广告网络允许,只要将广告代码放入iframe中,如果您需要将广告代码与其他JavaScript“隔离”。与我的回答相比。

非常快…CDATA内容是为了防止脚本嵌入到严格的XHTML文档中 如果您在DOM通过JS准备好后添加脚本标记,并且它有document.write,那么这是一个失败。不同的浏览器做不同的事情,但是document.write在那个时候是不允许的,我相信IE例如将清空屏幕(可能也是FF)


无论如何,你不知道广告脚本中有什么内容,所以改变语义是不好的——他们应该这样做。你可能今天有一些东西可以工作,明天就失败了。(即使将广告放在iframe中也是一个问题,因为他们的所有推荐都来自您的iframe,如果经常违反条款,则会伪造广告所在的页面,更不用说他们使用window.location扫描您的页面以查找上下文内容时会出现问题).

非常快…CDATA的内容是为了防止脚本嵌入到严格的XHTML文档中 如果您在DOM通过JS准备好后添加脚本标记,并且它有document.write,那么这是一个失败。不同的浏览器做不同的事情,但是document.write在那个时候是不允许的,我相信IE例如将清空屏幕(可能也是FF)


无论如何,你不知道广告脚本中有什么内容,所以改变语义是不好的——他们应该这样做。你可能今天有一些东西可以工作,明天就失败了。(即使将广告放在iframe中也是一个问题,因为他们的所有推荐都来自您的iframe,如果经常违反条款,则会伪造广告所在的页面,更不用说他们使用window.location扫描您的页面以查找上下文内容时会出现问题).

哦,我相信我把它附加到哪里并不重要,对吧..我想这可能会改变他们脚本中横幅出现的位置。如果他们的脚本使用
document.write
,那么我怀疑使用
createElement
添加脚本会破坏页面。哦,我相信我把它附加到哪里并不重要,r是的..我想这可能会改变他们脚本中横幅的显示位置。如果他们的脚本使用
document.write
,那么我怀疑使用
createElement
添加脚本会破坏页面。请分别询问每个问题。他们没有连接。请分别询问每个问题。他们是not已连接。