0

在网页中,一个由 div 组成的“上下文菜单/subMneu”在悬停在单独的 div 上时显示。当用户单击文档中的其他位置时,此子菜单将关闭,这意味着鼠标单击文档将导致子菜单关闭。在 IE8 中,Chrome12 和 Firefox 子菜单在单击鼠标左键时关闭。

发生了什么。在 Internet Explorer8 和 Chrome12 中,当我们按下鼠标右键时,它并没有关闭。浏览器的默认菜单正在打开,这是一个正确的功能。但是在 Mozilla Firefox 中单击鼠标右键子菜单正在关闭。

我的问题是为什么这只发生在 Mozilla 中以及如何解决它?

下面是代码片段。我使用了 detachEvent/deatchEventListener 和 attachEvent/attachEventListener ,因为在 IE8 中不支持 deatchEventListener/attachEventListener

代码:

function hideSubMenu(){
  doument.getElementById("elem").style.display = none;
  if(document.detachEvent){
     document.detachEvent('onclick',hideSubMenu);
  }
  else(document.detachEventListener){
     document.detachEventListener('click',hideSubMenu,true);
  }
}
#in which Event is attached
function displayMenu(){
   if(document.attachEvent){
      document.attachEvent('onclick',hideSubMenu);
   }
   else(document.attachEventListener){
      document.attachEventListener('click',hideSubMenu,true);
   }
}

注意:我只能使用 javascript。所以请大家记住这一点。谢谢。

4

1 回答 1

1

似乎FFclick也用鼠标右键触发。你可以尝试这样的事情:

function hideSubMenu (e) {
    var menu = document.getElementById('elem');
    if (document.detachEvent) {
        menu.style.display = 'none';
        document.detachEvent('onclick', hideSubMenu);
    } else {
        if (e.which === 1) { // Checks left-click
            document.removeEventListener('click', hideSubMenu);
            menu.style.display = 'none';
        }
    }
    return;
}

function displayMenu () {
    if (document.attachEvent) {
        document.attachEvent('onclick', hideSubMenu);
    } else {
        document.addEventListener('click', hideSubMenu, false);
    }
    return;
}

jsFiddle中的工作演示。

于 2013-01-08T18:57:40.413 回答