2013-10-07 32 views
3

此:解釋數組中的字符串「</script>」,是否有解決方法?

<script type="text/javascript"> 
var a = new Array("</script>"); 
alert(a); 
</script> 

...沒有按照預期(至少我)的工作。字符串"</script>"被解釋爲腳本的結尾,即使它在引號中。請參閱這些jsfiddles:

http://jsfiddle.net/RYbTS/

http://jsfiddle.net/PB73z/

第一聲明瞭陣列的第一元件以正常的方式,而第二聲明它在一個緊湊的形式。在這兩種情況下,瀏覽器(Chrome,FF,IE)都會停止腳本"</script>",並且永遠不會收到警報。

無論是使用引號還是雙引號,它的表現方式都是相同的。

是否預計?有沒有解決方法?

編輯:謝謝大家,我會逃避反斜槓。對不起,我無法接受每個人的回答,我接受了第一個,但感謝大家。

由Juhana提供的鏈接解釋這一行爲:

元素中的文本節點傳遞給JS引擎之前所有的HTML解析,</script>就沒有得到特殊待遇,作爲一個JS字符串字面內

回答

3

你可以逃脫/字符:

<script type="text/javascript"> 
var a = new Array("<\/script>"); 
alert(a); 
</script> 

這是一個updated fiddle

2

轉義序列:

var a = new Array("<\/script>"); 

或分割它:

var a = new Array("</scr" + "ipt>"); 

這就是爲什麼JSON編碼逸出/。通常沒有必要逃避它,但這是(我認爲)唯一遇到問題的情況。當然,逃避序列</script>更準確,但看起來有點出乎意料。

1

使用方法如下:

<script type="text/javascript"> 

var a = new Array("<\/script\>"); 
alert('ok'); 

</script> 

小提琴這裏:

http://jsfiddle.net/GUc2x/

相關問題