0

Web ページでは、div で構成される 1 つの「context-menu/subMneu」が別の div にカーソルを合わせると表示されます。ユーザーがドキュメントの別の場所をクリックすると、このサブメニューが閉じられます。つまり、ドキュメントをマウスでクリックすると、サブメニューが閉じます。IE8 では、Chrome12 と Firefox のサブメニューがマウスの左クリックで閉じられます。

何が起こっているのか.Internet Explorer8 & Chrome12 では、マウスの右ボタンを押しても閉じません。ブラウザのデフォルト メニューが開かれていますが、これは正しい機能です。しかし、Mozilla Firefox では、マウスの右ボタンをクリックするとサブメニューが閉じてしまいます。

私の問題は、これが Mozilla でのみ発生する理由と、それを解決する方法ですか?

以下はコードスニペットです。IE8 では deatchEventListener/attachEventListener がサポートされていないため、detachEvent/deatchEventListener と attachEvent/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

clickマウスの右ボタンでもFFがトリガーされるようです。次のようなことを試すことができます:

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 に答える