对不起,问题标题太模糊了,但是我正在查看Job posts board转换跟踪软件中的一些代码,并且第一次遇到这个问题。
document.write('<i' + 'mg height="1" ' +
'width="1" border="0" ' +
'src="' + url + '&ifr' + 'ame=0" />');
document.write('</ifr' + 'ame>');
为什么他们以这种方式分解字符串文字?具体来说是'</ifr'+'ame>'
答案 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,寻找某些标签来抓取。