मैं जावास्क्रिप्ट में एक 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 है

मैंने व्यक्तिगत रूप से दोनों स्थितियों की कोशिश की और वे ठीक काम करते हैं, जिससे मुझे लगता है कि "&&" ऑपरेटर में कुछ गड़बड़ है।

यदि इसका कोई महत्व है, तो मैं प्राइमफेस के साथ जेएसएफ में वेबस्फेयर सर्वर पर काम करता हूं और मैं इसे क्रोम में चलाने की कोशिश करता हूं। पृष्ठ लोड होने के बाद इसे हटाने के लिए जावास्क्रिप्ट को एक div के अंदर एम्बेड किया गया है:

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

        $("#deleteScript").remove();
    </SCRIPT>
</div>
1
Sirmyself 29 मार्च 2018, 17:48

4 जवाब

सबसे बढ़िया उत्तर

ऐसा लगता है कि जेएसएफ आपके जेएस के कुछ हिस्सों की व्याख्या कर रहा है जैसे कि यह एक्सएचटीएमएल था।

अपनी स्क्रिप्ट (<script> टैग के बाद) को <![CDATA[ और ]]> के साथ लपेटें ताकि यह सामग्री की शाब्दिक व्याख्या कर सके:

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

<![CDATA[ ... ]]> टैग एक्सएमएल फाइलों में उपयोग किए जाते हैं, जो आमतौर पर आरक्षित वर्णों जैसे '&', '>' आदि के उपयोग की अनुमति देते हैं। आप यह उत्तर और यहां

1
Federico klez Culloca 29 मार्च 2018, 15:54

समस्या इस तथ्य से आती है कि आपने अपना जेएस एचटीएमएल स्क्रिप्ट टैग में लिखा है। अगर मैं तुम होते तो मैं क्या करता:

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

चूंकि स्क्रिप्ट टैग "डिलीटस्क्रिप्ट" आईडी के साथ div के भीतर है, इसलिए स्क्रिप्ट लोड होने पर तत्व मौजूद रहेगा और आप इसे हटा सकते हैं।

-3
TVG 29 मार्च 2018, 14:53

यह ब्राउज़र के साथ कोई समस्या नहीं है; ऐसा लगता है कि आपका सर्वर "&&" पर काम करने का प्रयास कर रहा है। हो सकता है कि आपको इसे अपने कोड में बचाना पड़े।

0
Aanand Kainth 29 मार्च 2018, 14:52

मुझे वास्तव में निम्नलिखित वाक्यविन्यास का उपयोग करना पड़ा:

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

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

जो मुझे इस अन्य उत्तर पर मिल सकता है। बलुससी को लगता है कि हमें इस समाधान का उपयोग केवल तभी करना चाहिए जब हम पुराने वेब ब्राउज़र के लिए काम करते हैं, लेकिन ऐसा प्रतीत होता है कि जब हम पुराने जेएसएफ सर्वरों पर भी काम करते हैं तो यह आवश्यक हो जाता है।

1
Sirmyself 30 मार्च 2018, 13:05