我花了一些时间来简化代码以获得一个简单的问题示例。我正在使用Dojo 1.6.1。我在我的页面上定义了TabContainer。在Dinamically,我添加了两个选项卡,每个选项卡包含一个带有rowMenu的EnhancedGrid(右键单击)。问题是如果TabContainer被定义为使用页面上的所有可用空间,则菜单在IE8上无法正常工作。如果我使用特定的高度和宽度,它工作正常。如果不正常我的意思是:菜单很简单;它只有两个MenuItem,其中一个是显示子菜单的PopupMenu,如下所示:
如果TabContainer获取所有可用的宽度和高度,菜单会做一些非常奇怪的事情。首先,如果右键单击一行,它就不会执行任何操作。您需要第二次右键单击。然后菜单显示,但是当您打开子菜单时,主菜单消失,子菜单不起作用。它一直浮动,直到你导航到其他页面:
当它失败时,它会在dojox / grid / _FocusManager.js的第208行抛出一个javascript错误,说''undefined'为null或不是对象“
[...]
_scrollHeader: function(currentIdx){
var info = null;
if(this._colHeadNode){
var cell = this.grid.getCell(currentIdx);
info = this._scrollInfo(cell, cell.getNode(0));
}
[...]
我试图创建一个jsfiddle示例,但Dojo 1.6.1在那里不可用,并且使用Dojo .1.6.0时,行为是不同的(您需要左键单击该行然后右键单击,然后菜单工作正常),所以我创建了一个简单的HTML示例,您可以在http://pastebin.com/jDNFQxrP上看到。要查看差异,您只需更改代码底部的注释TabContainer即可。有人曾见过这个吗?
由于
JL