2011-10-06 53 views
2

我有一個HTML圖像映射,其中有幾個區域與鏈接。我還有一些Javascript功能,在某些情況下,它會覆蓋某些特定區域的圖像映射的默認功能。如何防止圖像地圖區域點擊從傳播到鏈接?

我重視我的功能,我想地區通過這個功能(其中el是元素,eventName是事件的名稱和eventHandler是實際功能):

function bindEvent(el, eventName, eventHandler) 
{ 
    if (el.addEventListener) 
    { 
    el.addEventListener(eventName, eventHandler, false); 
    } 
    else if (el.attachEvent) 
    { 
    el.attachEvent('on'+eventName, eventHandler); 
    } 
} 

所以通過我自定義處理程序我做這樣的事情:

function onAreaClick(e) 
    { 
      //my custom code here 

     e.cancelBubble = true; 
     if(e.stopPropagation) 
       e.stopPropagation(); 

     return false; 
    } 

    //... 
    //assume looping through all areas of the imagemap here, with each element referred to by the variable area 
    bindEvent(area, 'click', onAreaClick); 

其實onAreaClick功能觸發OK,但我不能得到的情況下,停止傳播。我試過cancelBubblestopPropagationreturn false,但鏈接仍然沿用。我也嘗試將冒泡的階段更改爲,在bindEvent()中的addEventListener()函數調用中捕獲

如何通過觸發圖像映射的默認操作來阻止此事件?

回答

1

好了,經過一番更多的實驗我好像得到它的工作在所有瀏覽器沒有JS錯誤(或者看起來是這樣)。

我創建了一個停止默認處理函數的函數,並且我將其作爲參數調用了該函數。此功能看起來像這樣:

function stopDefaultHandler(e) 
{ 
    if (e) 
    { 
     e.cancelBubble = true; 
     e.returnValue = false; 

     if (e.stopPropagation) 
     e.stopPropagation; 

     if (e.preventDefault) 
     e.preventDefault(); 
    } 

    if (window.event && window.event.returnValue) 
     window.eventReturnValue = false; 
} 

它似乎工作正常,但意見讚賞。

0

你嘗試

e.preventDefault() 
+0

適用於Firefox和Chrome,不適用於IE :( – jbx