如何在 IE8 中禁用 ondblclick?

How do I disable ondblclick in IE8?

所以,我已经尝试过选择的答案:

How to disable ondblclick in JavaScript?

但就我而言,它不起作用。和往常一样,我怀疑它与 IE8 有关(因为我以前的很多问题都与 IE8 问题有关)。

这就是我的按钮的样子,keyBtnEvent 是一个改变 div:

的 class 的函数

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>

那么,如何在不使用 jquery 的情况下禁用 IE8 中的 ondblclick?

这是正确的 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 或更低版本)。