[英]Javascript - breaking up string literals… why?
對不起,問題標題太模糊了,但是我正在查看Job posts board轉換跟蹤軟件的一些代碼,並且第一次遇到這個問題。
document.write('<i' + 'mg height="1" ' +
'width="1" border="0" ' +
'src="' + url + '&ifr' + 'ame=0" />');
document.write('</ifr' + 'ame>');
他們為什么以這種方式分解字符串文字? 特別是'</ifr'+'ame>'
當HTML解析器看到某些標記時,即使嵌入在JavaScript字符串中,它們也會立即被解析為這些標記。
打破它們可以避免這種行為 - <script>
通常會導致問題; 我同意Mike的觀點, iframe
不應該是必要的(AFAIK也沒有其他人,但我不能以任何權威說話)。
這也是避免被抓取工具輕易解析的技巧。
它看起來像貨物崇拜編程。
在HTML中,您需要確保<script>
塊不包含</script>
,而您不想結束腳本。
例如,
<script>document.write('<script>alert(42);</script>');</script>
是一個破碎的劇本,但
<script>document.write('<script>alert(42);<\/script>');</script>
是一個結構良好的腳本塊。
在XHTML中, <script>
不能以這種方式工作,所以當你使用CDATA部分時,你需要擔心]]>
。
但在任何一種情況下,都不需要拆分</iframe>
和<img
。
我的猜測是他們這樣做是為了打敗網絡抓取工具,這通常會解析靜態HTML,尋找某些標簽來刮擦。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.