簡體   English   中英

使用JSF的Javascript奇怪的邏輯運算符行為:

[英]Javascript weird logical operator behavior using JSF : `&&`

我正在嘗試處理javascript中的keydown事件,而我目前停留在從未發生過的事情上:

var maxL = $("#myField").attr("maxLength")
console.log("Maximum Length : " + maxL);

if (e.key.length === 1 && str.length >= parseInt(maxL)) {
    console.log(">>>> in if");
    console.log(">>>> e.char == \"" + e.key + "\"");
    e.preventDefault();
}

當我加載頁面時,它失敗。 在調試時,我的服務器控制台記錄以下錯誤:

Error Parsing /folder/myPage.xhtml: Error Traced[line: 384] The entity name 
              must immediately follow the '&' in the entity reference.

其中384是if所在的行

我分別嘗試了這兩個條件,它們都工作正常,這使我認為“ &&”運算符有問題。

如果這很重要,我將使用PrimeFaces在JSF中的WebSphere服務器上工作,並嘗試在Chrome中運行它。 javascript嵌入div內,以便在頁面加載后將其刪除:

<div id="deleteScript">
    <SCRIPT>
        //my script code

        $("#deleteScript").remove();
    </SCRIPT>
</div>

看起來jsf正在解釋您的js部分,就好像它是xhtml一樣。

<![CDATA[ and ]]>將您的腳本(在<script>標記之后)包裝起來,使其從字面上解釋內容:

<script>
    <![CDATA[
        //your code
    ]]>
</script>

<![CDATA[ ... ]]>標記用於XML文件中,以允許使用通常保留的字符,例如'&','>'等。有關此答案的更多信息,請參見 此處

我實際上必須使用以下語法:

<div id="deleteScript">
    <SCRIPT>
        <!--//--><![CDATA[//><!--
            //my script code

            $("#deleteScript").remove();
        //--><!]]>
    </SCRIPT>
</div>

我可以在其他答案中找到。 BalusC似乎認為,只有在使用較舊的Web瀏覽器時,才應使用此解決方案,但是當我們在較舊的JSF服務器上工作時,似乎也有必要使用該解決方案。

這不是瀏覽器的問題。 看來您的服務器正在嘗試在“ &&”上進行操作。 也許您必須在代碼中對其進行轉義。

問題出在您的JS是用html腳本標記編寫的。 如果我是你,我會做的是:

<div id="deleteScript">
    <script src="path/to/script.js"></script>
</div>

由於腳本標記位於ID為“ deleteScript”的div ,因此在腳本加載時該元素將存在,您可以將其刪除。

暫無
暫無

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

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