2011-10-11 73 views
0
<script type="text/javascript" language="JavaScript"> 
    <!-- 
    alert('foo'); 
    //--> 
</script> 

它用遍了我公司的Grails應用程序,但我知道<是非法的JavaScript字符...這是非法的語法?

如若<!--//<!--呢?

+0

你爲什麼要那樣做?在Javascript中,您可以使用//或/ * * /進行評論 – lc2817

+4

如果瀏覽器不支持JavaScript,那麼確保JavaScript不會顯示爲文本的方式是老方法。 –

+2

看到http://www.javascripter.net/faq/hidingjs.htm(我可以找到第一個鏈接解釋它) –

回答

4

不,它不是非法的。從the specification

JavaScript引擎允許字符串「<!--」發生在一個SCRIPT元素開始,並且忽略進一步字符到行的結尾。

然而,這是毫無意義的。它旨在阻止不識別腳本元素的瀏覽器將內容呈現爲文本。腳本元素自Netscape 2以來一直支持!這使得今天語法的使用完全沒有意義。

但是,如果您使用的是XHTML,那麼它是有害的。由於腳本元素不包含內在的CDATA,因此它們內部的標記被視爲標記而不是CDATA,因此它實際上會對腳本進行註釋(如果文檔被處理爲XHTML並且不標記湯,這將需要application/xhtml + xml內容類型)。

<!--應該是//<!--而不是?

不,這會(部分)擊敗對象。

+1

但顯然stackoverflow不;);) –

0

這是允許的,但不應該使用它。最初是爲了防止在Mosaic FWIR中出現JavaScript文本。

0

如果瀏覽器不支持JavaScript,這是確保JavaScript不會顯示爲文本的舊方法。

請參閱here

0

<!--是Javascript中的一個特殊構造,在JavaScript剛出現的時代就已經存在了,並且JS未知瀏覽器無處不在。換句話說,Javascript理解並忽略HTML註釋開始標籤。它被視爲空白,並且僅用於隱藏來自不知道Javascript的古代瀏覽器的JS,或者甚至不知道<script>標籤是什麼。

另一方面,HTML註釋結束標記不是Javascript語言結構,必須使用JS //評論註釋掉。