Javascript - 打破字符串文字......为什么?

时间:2011-12-14 17:29:20

标签: javascript

对不起,问题标题太模糊了,但是我正在查看Job posts board转换跟踪软件中的一些代码,并且第一次遇到这个问题。

    document.write('<i' + 'mg height="1" ' +
         'width="1" border="0" ' +
         'src="' + url + '&ifr' + 'ame=0" />');
    document.write('</ifr' + 'ame>');

为什么他们以这种方式分解字符串文字?具体来说是'</ifr'+'ame>'

3 个答案:

答案 0 :(得分:7)

当HTML解析器看到某些标签时,即使嵌入在JavaScript字符串中,它们也会立即被解析为那些标签。

打破它们可以避免这种行为 - <script>通常会导致问题;我同意迈克的看法,iframe不应该有必要(AFAIK也没有其他人,但是我不能以任何授权来说明这一点。)

这也是避免被抓取工具轻易解析的技巧。

答案 1 :(得分:6)

看起来像货物崇拜节目。

在HTML中,您需要确保<script>块不包含您不希望结束脚本的</script>

例如,

<script>document.write('<script>alert(42);</script>');</script>

是一个破碎的脚本,但

<script>document.write('<script>alert(42);<\/script>');</script>

是一个格式正确的脚本块。

在XHTML中,<script>不能以这种方式工作,因此当您使用CDATA部分时,您需要担心]]>

在任何一种情况下,都不需要拆分</iframe><img

答案 2 :(得分:1)

我的猜测是他们这样做是为了打败网络抓取工具,这些抓取工具通常会解析静态HTML,寻找某些标签来抓取。