2013-01-08 47 views
0

鼠標鍵的左鍵爲Mozilla在網頁中一個「上下文菜單/ subMneu」由div的子菜單顯示在鼠標懸停在一個單獨的股利。當用戶在文檔的其他地方點擊時,該子菜單即將關閉,這意味着在文檔上點擊任何鼠標將導致關閉子菜單。 在IE8中,Chrome12的子菜單在點擊鼠標左鍵時會關閉。藏匿在JavaScript

什麼是happening.In互聯網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我use.So可以請求大家繼續建議保持此心裏。 謝謝。

回答

1

看來FF觸發click用鼠標右鍵了。你可以嘗試這樣的事情:

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工作演示。

+0

感謝Teemu。有效.. – Infotechie