105

*.xhtml ページに packman ゲームを配置したい (私は jsf 2 と primefaces 3.5 を使用しています)

でも、

html ページを xhtml で「翻訳」すると、次のスクリプトでエラーが発生します。

    <script>

    var el = document.getElementById("pacman");

    if (Modernizr.canvas && Modernizr.localstorage && 
        Modernizr.audio && (Modernizr.audio.ogg || Modernizr.audio.mp3)) {
      window.setTimeout(function () { PACMAN.init(el, "./"); }, 0);
    } else { 
      el.innerHTML = "Sorry, needs a decent browser<br /><small>" + 
        "(firefox 3.6+, Chrome 4+, Opera 10+ and Safari 4+)</small>";
    }
  </script>

行で:

if (Modernizr.canvas && Modernizr.localstorage && 

私は得る:

エンティティ名は、エンティティ参照の「&」の直後にある必要があります。

それを修正する方法はありますか?

4

6 に答える 6

16

&すべての XHTML 文字を手動で調べてエスケープする場合 (たとえば、 になる必要がある場合)を除いて、script タグ内に CDATA タグを追加する必要があります&amp;。例えば:

<script>
//<![CDATA[
var el = document.getElementById("pacman");

if (Modernizr.canvas && Modernizr.localstorage && 
    Modernizr.audio && (Modernizr.audio.ogg || Modernizr.audio.mp3)) {
  window.setTimeout(function () { PACMAN.init(el, "./"); }, 0);
} else { 
  el.innerHTML = "Sorry, needs a decent browser<br /><small>" + 
    "(firefox 3.6+, Chrome 4+, Opera 10+ and Safari 4+)</small>";
}
//]]>
</script>
于 2013-04-30T15:43:50.610 に答える
13

パーサーは何らかの HTML コンテンツを想定しているため&、 のようなエンティティの始まりと見なされ&egrave;ます。

次の回避策を使用します。

<script type="text/javascript">
// <![CDATA[
Javascript code here
// ]]>
</script>

そのため、コードが HTML テキストではなく、そのまま使用されるデータのみであることを指定します。

于 2013-04-30T15:44:03.783 に答える
5

行う

<script>//<![CDATA[
    /* script */
//]]></script>
于 2013-04-30T15:44:41.517 に答える
0

BeautifyBlogger の誰かが到着した場合に備えて、VSCode で拡張機能を使用しているときにこの問題が発生しました。使わないbeautifyでください。

于 2020-10-11T17:02:42.227 に答える