2010-06-17 3 views
2

Служба валидатора w3c жалуется, что следующий html недействителен. Ему не нравится амперсанд (&) в моем javascript. Но амперсанды разрешены в строках javascript, не так ли?Является ли следующий действительный XHTML 1.0 Transitional?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
     <title>Page Title</title> 
    </head> 
    <body> 
     <script type="text/javascript"> 


      function search(query) { 
      redir = "http://search.mysite.com/search?s=FIN&ref=&q=" + query; 
      window.location.href = redir 
      return false; 
      } 
     </script> 

     <span>This is all valid HTML</span> 

    </body> 
</html> 
+1

Они разрешены в строке JavaScript. Но ваша строка JavaScript находится в HTML. И там это запрещено. – Gumbo

+0

http://validator.w3.org/#validate_by_input – 2010-06-17 13:02:02

ответ

1

Нет, это действительно недействительно. Если вы хотите использовать встроенный JavaScript в файле XHTML, вам необходимо обернуть JavaScript в CDATA. Если вы не хотите этого делать, то вы застряли с кодировкой &, < и>, что в JavaScript может быть довольно больно.

3

Все браузеры будут принимать это, но, чтобы сделать его действительным X (HT) ML вам необходимо поместить код Javascript в CDATA блоке.

2

Даже в валидаторе javascript w3c не нравятся амперсанды. Комментируйте ваш javascript с помощью валидатора.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
     <title>Page Title</title> 
    </head> 
    <body> 
     <script type="text/javascript"> 
     //<![CDATA[//><!-- 
      function search(query) { 
      redir = "http://search.mysite.com/search?s=FIN&ref=&q=" + query; 
      window.location.href = redir 
      return false; 
      } 
     //--><!]]> 
     </script> 

     <span>This is all valid HTML</span> 

    </body> 
</html>