2016-02-11 63 views
0

在HTML5中,我能夠在一個線路上使用特殊的JavaScript字符如下:XHTML JavaScript代碼一行

<script> var x;If (x < 1){alert('</'+'script'+'>');} </script> 

不過,我想我的代碼適應移動設備,所以我以爲努力恪守移動配置文件1.2是好的,但是,我得到的各種解析錯誤與上面的代碼,如:

character "<" is the first character of a delimiter but occurred as data 

StartTag: invalid element name 

並且這兩個錯誤都會突出顯示「<」字符。

這裏的一個帖子表示我可以使用CDATA標籤和其他地方表明,html評論標籤可能工作,但問題是這兩種方法都需要javascript來處理它們。例如:

<script type="text/javascript"><!-- 
var x;If (x < 1){alert('</'+'script'+'>');}  
// --> 
</script> 

<script type="text/javascript"> 
// <![CDATA[ 
var x;If (x < 1){alert('</'+'script'+'>');}  
// ]]> 
</script> 

有沒有一種方法,我可以得到所有內一行這種JavaScript代碼,並將它仍能正常執行,而不在W3C驗證接收解析錯誤?

回答

0

如果應該是小寫。如果

var x;if (x < 1){alert('</'+'script'+'>');} 
+0

雖然這是絕對正確的,但我認爲這只是OP部分打字時的錯字。我的意思是,這不是生產代碼,這是肯定的! –

1

你應該如果使用較低的情況下,你也應該使用轉義字符代碼:

var x;if (x < 1){alert('\x3C/script>');} 

我不認爲這是絕對必要的,但你也可以使用一個轉義字符對於腳本標記的另一端:

var x;if (x < 1){alert('\x3C/script\x3E');} 
0

根據您的情況,有幾種解決方案。

  1. 如果這是真實的XHTML,也就是說,擔任了一個XML文件類型(例如,用.xhtml擴展名的文件),你就根本不需要爲<![CDATA[分隔符的意見。哦,你不需要把'</script>'分成幾塊。

    <script type="text/javascript"> <![CDATA[ var x;if (x < 1){alert('</script>');} ]]> </script> 
    
  2. (也與真正的XHTML),作爲替代,你可以簡單地用&amp;替換每個<&lt;每個&,然後連<![CDATA[是沒有必要的。

    <script type="text/javascript"> var x;if (x &lt; 1){alert('&lt;/script>');} ]]> </script> 
    
  3. 但如果你不知道結果會是真正的XHTML或沒有,你將不得不使用的分隔符<![CDATA[意見,是的。並切斷了'</script>'
    但是,您不需要//評論。 /* .. */會做得很好!

    <script type="text/javascript"> /*<![CDATA[*/ var x;if (x < 1){alert('</'+'script'+'>');} /*]]>*/ </script> 
    

順便說一句,我會在</之間切割,但是這只是我。