簡體   English   中英

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

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM