2010-02-20 193 views
1

我有一些JavaScript嵌入在像这样特殊字符

<html> 
    <head> 
     <script> 
      // and the script runs here 
     </script> 
    </head> 
    <body></body> 
</html> 

的HTML文件,它有这样的

if((os == 'Mac')&&((br == 'Safari')||(br == 'Chrome'))) 

一切一行去OK(这意味着脚本作品),但the validator尖叫:

...字符“&”是第一个字母分隔符的呃,只是当作数据
...此消息可能出现几种情况:
- 你试图在您的页面中的“<”字:你应该转义为“<”
- 您使用一个非转义的&符号“&”:这可能在某些情况下有效,但建议使用“&”,这总是安全的。
- 另一种可能是您忘记关闭前一个标签中的引号。

将&全部替换为& amp似乎是荒谬的。我怎样才能摆脱那个错误?

回答

5

如果使用XHTML,你需要一个CDATA section中附上内嵌脚本:

<script type="text/javascript"> 
// <![CDATA[ 
    document.write("&"); 
// ]]> 
</script> 

延伸阅读:

+0

地狱耶谢谢。这似乎很有趣,我必须逃避'<![CDATA ['东西 – phunehehe 2010-02-20 16:19:35

+1

那是因为你试图写一些既XHTML又足够接近HTML的东西,当你告诉浏览器它是text/html而不是应用/ XHTML + XML。这是更加努力,那么它是值得IMO,所以我坚持编写HTML 4.01。 – Quentin 2010-02-20 16:27:46

+1

...我仍然使用XHTML,但是坚持使用外部脚本处理任何大量的代码。无论哪种方式,避免显式的浏览器嗅探。 – bobince 2010-02-20 17:44:42