Javascript Chrome 57和x2B上的JS错误;对于RichFaces应用程序“;无法读取属性';切换到项目&x27;“未定义”的定义;

Javascript Chrome 57和x2B上的JS错误;对于RichFaces应用程序“;无法读取属性';切换到项目&x27;“未定义”的定义;,javascript,java,google-chrome,jsp,richfaces,Javascript,Java,Google Chrome,Jsp,Richfaces,我有一个带有选项卡的jsp页面。有时会出现错误(当我按tab键时)“无法读取未定义的属性'switchToItem'” Uncaught TypeError:无法读取未定义的属性“switchToItem” 在初始化时,点击headerclick(packed.js:6102) 在HTMLTableCellElement。(packed.js:1333) 在HTMLTableCellElement.dispatch(jquery.js:846) 在HTMLTableCellElement.ev

我有一个带有选项卡的jsp页面。有时会出现错误(当我按tab键时)“无法读取未定义的属性'switchToItem'”

Uncaught TypeError:无法读取未定义的属性“switchToItem”
在初始化时,点击headerclick(packed.js:6102)
在HTMLTableCellElement。(packed.js:1333)
在HTMLTableCellElement.dispatch(jquery.js:846)
在HTMLTableCellElement.eventHandle(jquery.js:722)上
据我所知,错误发生在packed.js中(这是由版本4.3.4的richfaces打包的js文件)。我查看了这个文件,发现RichFaces试图查找选项卡列表。这些选项卡位于属性“rf”(
元素[richfaces.RICH\u CONTAINER]
)中,但当我按下选项卡时,并没有属性

这个bug会在chrome v.57中重现,但在56版中不会重现。 你能帮我提些建议吗?怎样修理

一些技术细节:

  • 我使用
    xmlns:rich=”http://richfaces.org/rich“
    我的jsp页面中的标记”
  • 在pom.xml
    4.3.4.Final中

    • 这可能是Chrome 57的问题。试试Chrome58测试版。

      很抱歉,我没有足够的信誉点对此发表评论

      我不知道谷歌浏览器是否知道这个问题,或者是否愿意解决它。我们对此的回应是修补RichFaces 4.3.7.Final javascript,使其不使用adhoc dom元素属性,而是使用全局映射,然后在月底(测试后)将我们自己的RichFaces jar部署到我们的生产环境中。我不需要将其部署到central repo,但如果您想看到我所做的直接更改,可以查看我的提交()。如果chrome解决了这个问题,那么这将不是一个问题,但我不指望这一点。 到目前为止,我所做的更改在chrome(和其他浏览器)中运行良好


      更新:我已经包括了由dennyDarko找到的修复程序-谢谢。我的理解是Chrome 58 beta版不会产生这种行为,因此对于某些受影响的应用程序,管理员可能会选择等待。

      James G,您在richfaces.js中有一个错误

         richfaces.$$ = function(componentName, element) {
              while (element.parentNode) {
                  var containerId = element.getAttribute(richfaces.RICH_CONTAINER);
                  if (containerId && containerId !== "" && !!richfaces.COMPONENT_MAP[containerId] && richfaces.COMPONENT_MAP[containerId].component.name == componentName) {
                      return e.component;
                  }
                  else {
                      element = element.parentNode;
                  }
              }
      };
      
      没有
      e
      。你需要把它改成

      ...
      return richfaces.COMPONENT_MAP[containerId].component;
      ...
      

      首先尝试升级到RichFaces的最新版本。它仍然可以在RichFaces 4.3.7中复制。最后一个版本是4.5.17,不会有其他版本。这可能与是否有人找到解决方法有关?RF 4.3和Chrome 57也有同样的问题。升级到RF 4.5是不可能的(如果我没记错的话,需要JSF 2.2),而且显然它与4.5 eitherHi@James-G不兼容。你能解释一下Google Chrome v.57中出现这个问题的原因吗?谢谢。Chrome 58不会转载本期内容
      ...
      return richfaces.COMPONENT_MAP[containerId].component;
      ...