簡體   English   中英

html解析注釋,其中包含javascript

[英]html parsing of comments which enclose javascript

根據SGML / HTML標准:

“簡單地說,注釋開頭和結尾的雙破折號不會開始和結束注釋。雙破折號表示允許包含注釋的內容發生了變化。第一個-啟動注釋,並告訴注釋瀏覽器允許注釋中包含>個字符而不結束該注釋。第二個-不結束該注釋。它告訴瀏覽器如果遇到>字符,則必須結束該注釋。如果添加了另一個– ,然后返回允許使用>字符。”

我的問題是:

假設html注釋中包含一些javascript,我將如何處理腳本中的'>'字符。

例如

 <!-- 
 <script>
 for(x=10;x>1;x--) 
  { 
  if(x>5) {}
  }
 </script>
 -->

x--不會將html解析器設置為將下一個'>'視為注釋的末尾,在這種情況下,它將大於(x> 5)中的符號?

一個讓我感到困惑的例子:

          <!--[if lt IE 9]>
          <!--<script type="text/javascript" src="/respond.js" >
          var i=10;
          if(i-->5) {}
          </script>-->
          <![endif]-->

根據有關正確使用注釋的MDN文檔

[15] Comment ::= '<!--' ((Char - '-') | ('-' (Char - '-')))* '-->'

因此, -- >不會以XML結束注釋塊,而是以HTML結束注釋塊。

來自同一來源的示例

有效評論

<!-- valid xml/xhtml comment -->

無效的評論

<!-- invalid -- xml comment -->
<!-- invalid xml comment --->
<!-- invalid xml comment -- >

現在,你的問題

不會x--將html解析器設置為將下一個'>'視為注釋的結尾

答案 :否,html解析僅將-->視為注釋的結尾,而不考慮其他任何組合。 HTML解析器的末段只能出現空格,例如-- >

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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