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

Chr*_* G. 7 javascript

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

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

他们为什么以这种方式分解字符串文字?特别'</ifr'+'ame>'

Dav*_*ton 7

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

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

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


Mik*_*uel 6

它看起来像货物崇拜编程.

在HTML中,您需要确保您的<script>块不包含</script>您不想结束脚本的内容.

例如,

<script>document.write('<script>alert(42);</script>');</script>
Run Code Online (Sandbox Code Playgroud)

是一个破碎的剧本,但

<script>document.write('<script>alert(42);<\/script>');</script>
Run Code Online (Sandbox Code Playgroud)

是一个结构良好的脚本块.

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

在任何一种情况下,分裂</iframe>并且<img是不必要的.