2017-05-30 173 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/ –