我正在尝试使用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>
答案 0 :(得分:1)
看起来jsf正在解释你的js部分,好像它是xhtml。
使用<script>
和<![CDATA[
包裹您的脚本(在]]>
标记之后)以使其按字面解释内容:
<script>
<![CDATA[
//your code
]]>
</script>
<![CDATA[
... ]]>
标记用于XML文件,以允许使用通常保留的字符,例如&#39;&amp;&#39;&#39; &GT;&#39;您可以在this answer和here上阅读更多内容。
答案 1 :(得分:1)
我实际上必须使用以下语法:
<div id="deleteScript">
<SCRIPT>
<!--//--><![CDATA[//><!--
//my script code
$("#deleteScript").remove();
//--><!]]>
</SCRIPT>
</div>
我可以在this other answer找到。 BalusC似乎认为,如果我们使用旧的Web浏览器,我们应该只使用这个解决方案,但是当我们处理旧的JSF服务器时,它似乎也是必要的。
答案 2 :(得分:0)
这不是浏览器的问题;您的服务器似乎正在尝试操作“&amp;&amp;”。也许你必须在你的代码中逃避它。
答案 3 :(得分:-3)
问题来自于您在html脚本标记中编写了JS。如果我是你,我会怎么做:
<div id="deleteScript">
<script src="path/to/script.js"></script>
</div>
由于脚本标记位于带有ID&#34; deleteScript&#34;的div
内,因此当脚本加载时该元素将存在,您可以将其删除。