2017-05-30 382 views
0

所以,我已經嘗試過這個選擇的答案:如何禁用IE8中的dblclick?

How to disable ondblclick in JavaScript?

,但它不工作,在我結束。按照慣例,我懷疑它與IE8有關(因爲我以前的許多問題都與IE8問題有關)。

這是我的按鈕看起來像,keyBtnEvent是改變類的div函數:

function keyBtnEvent(key, id, event) { 
 
    //change class of object with id = 'id' 
 
    console.log(event + 'event of keyBtnEvent called'); 
 
}
<div id="2Key" class="key" 
 
    onmouseup="keyBtnEvent('2','2Key','up')" 
 
    onmousedown="keyBtnEvent('2','2Key','down')"> 
 
    <button>2</button> 
 
</div>

那麼,如何禁用onfocus此在IE8中,沒有使用jQuery ?

+1

請編輯您的問題以顯示'keyBtnEvent()'函數。根據你所顯示的代碼,它可能(可能)是'onmouseXYZ =「return keyBtnEvent(...)」'(也就是說,從函數返回值,假設當你想取消時返回'false'事件)。 – nnnnnn

+0

你是說我應該添加一個'ondblclick =「return keyBtnEvent('2','2key','dblclick')」'? –

+0

哦,對不起,我沒有注意到你現有的活動沒有包含'ondblclick'。只需添加一個'ondblclick =「return false」'屬性即可。 (不是我通常推薦內聯事件屬性,但是因爲您已經在使用它們進行其他事件。) – nnnnnn

回答

0

這是正確的IE 8的方式來做到這一點:

var key = document.getElementById('2Key') 

// Feature detection for DOM Event Standard and IE 8 and less 
if(window.addEventListener){ 
    // W3C DOM Event Standard 
    key.addEventListener("dblclick", function(evt) { 
    evt.preventDefault(); // stop the event 
    evt.stopPropagation(); // don't bubble the event 
    }); 
} else if(window.attachEvent){ 
    // IE 8 or less 
    key.attachEvent("ondblclick", function(evt) { 
    evt = evt || window.event; 
    evt.returnValue = false; // stop the event 
    evt.cancelBubble = true; // don't bubble the event 
    }); 
} 

而且,你不應該使用內聯HTML事件屬性(onmouseoveronmouseout等)。 Here's why.相反,您應該在專用腳本中完成所有JavaScript工作,並使用.addEventListener()(或上面的attachEvent()方法適用於IE 8或更低版本)。

+0

這不適用於我...我知道,dblclick仍然沒有被禁用,因爲按鈕類不會在dblclick中更改(當它應該 - 即mousedown更改按鈕類,但只爲第一次點擊) –

+0

我在編輯之前評論過。所以呃...是的,讓我先嚐試一下。 –

+0

我不確定當你說*按鈕類在dblclick *上沒有改變時 - 這就是整點 - 禁用雙擊事件。這是一個帶模擬'keyBtnEvent'函數的工具小提琴。 https://jsfiddle.net/11Ln4ago/9/ –