我的网络应用程序工作非常好: Opera,FF,Chrome,Safari。现在我在IE上测试了它,有一些奇怪的错误。我用IE调试了我的网站,它说:
<a id="navi:searchButton" href="#" onclick="jsf.util.chain(this,event,'activateSearchDiv();return false;','mojarra.jsfcljs(document.getElementById(\'navi\'),{\'navi:searchButton\':\'navi:searchButton\'},\'\')');return false">Search</a>>> "jsf“未定义(在jsf.util.chain中).
但我确实加载了这些脚本:
<h:body>
<f:view contentType="text/html">
<h:outputScript library="js" name="chooseDevice.js" target="head" />
<h:outputScript library="js" name="navigationScript.js" target="head" />
<h:outputScript library="js" name="jquery.js" target="head" />
<h:outputScript name="jsf.js" library="javax.faces" target="head" />
...我认为识别出来的"jsf“在jsf.js中是可用的。为什么IE会返回这个错误?
这些只是用JSF标记创建的简单命令按钮/链接:
我错过什么了吗?为什么它在除IE之外的所有浏览器上都能工作?不幸的是,我没有找到任何关于谷歌的暗示。
问候约翰尼
发布于 2011-06-02 00:52:43
您有一个id设置为"jsf“的DOM元素吗?IE有一个奇怪的错误,当我们尝试使用全局变量时,它与元素的id具有相同的名称。
如果是这样的话,您可以预先声明变量(在页面顶部的脚本块中放置一个"var varName;“),也可以重命名元素的id。
更多关于这一点的链接如下:http://www.west-wind.com/weblog/posts/2009/Mar/22/Internet-Explorer-Global-Variable-Blow-ups
发布于 2012-04-10 22:17:08
将JSF声明放在js声明的顶部,也用h:head标记包围这些声明,因此我建议改为:
<h:head>
<h:outputScript name="jsf.js" library="javax.faces" target="head" />
<h:outputScript library="js" name="jquery.js" target="head" />
<h:outputScript library="js" name="chooseDevice.js" target="head" />
<h:outputScript library="js" name="navigationScript.js" target="head" />
</h:head>
<h:body>
<f:view contentType="text/html">https://stackoverflow.com/questions/4878050
复制相似问题