第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

實(shí)體名稱必須緊隨實(shí)體引用中的“&”

實(shí)體名稱必須緊隨實(shí)體引用中的“&”

猛跑小豬 2019-09-21 11:44:00
我想在我的* .xhtml頁面上放一個(gè)packman游戲。(我正在使用jsf 2和primefaces 3.5)然而,當(dāng)我“翻譯” xhtml中的html頁面時(shí),此腳本出現(xiàn)錯(cuò)誤:    <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 && 我得到:實(shí)體名稱必須緊隨實(shí)體引用中的“&”之后。任何想法如何解決?
查看完整描述

3 回答

?
隔江千里

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超10個(gè)贊

到目前為止,所有發(fā)布的答案都給出了正確的解決方案,但是沒有人能夠正確解釋具體問題的根本原因。


Facelets是基于XML的視圖技術(shù),它使用XHTML + XML生成HTML輸出。XML具有五個(gè)特殊字符,XML解析器對(duì)其進(jìn)行了特殊處理:


< 標(biāo)簽的開始。

> 標(biāo)簽的結(jié)尾。

" 屬性值的開始和結(jié)束。

' 屬性值的替代開始和結(jié)束。

&實(shí)體的開頭(以結(jié)尾;)。

在箱子&,其后面沒有#(例如&#160;,&#xA0;等),XML解析器被隱含找五個(gè)一預(yù)定義的實(shí)體名稱 lt,gt,amp,quot和apos,或任何手動(dòng)定義實(shí)體名稱。但是,在您的特定情況下,您使用的&是JavaScript運(yùn)算符,而不是XML實(shí)體。這完全解釋了您遇到的XML解析錯(cuò)誤:


實(shí)體名稱必須緊隨實(shí)體引用中的“&”


本質(zhì)上,您在錯(cuò)誤的位置編寫了JavaScript代碼,而不是JS文件而不是JS文件,因此您應(yīng)該相應(yīng)地轉(zhuǎn)義所有XML特殊字符。在&必須進(jìn)行轉(zhuǎn)義為&amp;。


因此,在您的特定情況下,


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

必須成為


if (Modernizr.canvas &amp;&amp; Modernizr.localstorage &amp;&amp;

使它對(duì)XML有效。


但是,這使JavaScript代碼更難以閱讀和維護(hù)。如Mozilla開發(fā)人員網(wǎng)絡(luò)出色的文檔“為XHTML編寫JavaScript”所述,您應(yīng)該將JavaScript代碼放在字符數(shù)據(jù)(CDATA)塊中。因此,按照J(rèn)SF的說法,它將是:


<h:outputScript>

    <![CDATA[

        // ...

    ]]>

</h:outputScript>

XML解析器會(huì)將塊的內(nèi)容解釋為“普通香草”字符數(shù)據(jù),而不是XML,因此將XML特殊字符“按原樣”解釋。


但是,更好的方法是將JS代碼放在自己的JS文件中,該文件應(yīng)由<script src>或以JSF的形式包含在其中<h:outputScript>。


<h:outputScript name="onload.js" target="body" />

(請(qǐng)注意target="body";這種方法;無論它本身位于什么位置,JSF都將<script>在末尾自動(dòng)呈現(xiàn),從而達(dá)到與和相同的效果;因此,您不再需要在該腳本中使用它們了)<body><h:outputScript>window.onload$(document).ready()


這樣,您無需擔(dān)心JS代碼中的XML特殊字符。作為額外的好處,這使您有機(jī)會(huì)讓瀏覽器緩存JS文件,從而減小總響應(yīng)大小。


查看完整回答
反對(duì) 回復(fù) 2019-09-21
?
FFIVE

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊

解析器期望一些HTML內(nèi)容,因此它將&視為實(shí)體的開始,例如&egrave;。


使用以下解決方法:


<script type="text/javascript">

// <![CDATA[

Javascript code here

// ]]>

</script>

因此,您指定代碼不是HTML文本,而只是按原樣使用的數(shù)據(jù)。

查看完整回答
反對(duì) 回復(fù) 2019-09-21
  • 3 回答
  • 0 關(guān)注
  • 1606 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)