5

我正在使用 Javascript 制作滚动条。除一个问题外,一切正常。我注意到,在拖动滚动条时,如果我将鼠标移到正在滚动的上下文上,内容就会被选中。我不希望这种情况发生,所以我使用preventDefault了事件对象中的方法,该方法非常适用于 IE9 和其他现代浏览器。但是在 IE7 和 IE8 上,问题依然存在。我做了一些搜索,发现我应该将returnValue事件对象的参数设置为false。但问题仍然存在。另外,如果我写alert(window.event.returnValue)它会弹出undefined

scrollbar.onmousedown = function (event) {
    if (typeof event == 'undefined') event = window.event;
    if (typeof event.preventDefault != 'undefined') event.preventDefault();
    event.returnValue = false;
    // do some stuff
}

我究竟做错了什么?

4

3 回答 3

2

在 IE7&8 中,没有事件对象作为函数的参数,而是存在 window.event。尝试

window.event.cancelBubble = true

停止传播。为避免 FireFox 等出现问题,请执行以下操作:

    if (!event)
       event = window.event;

    //IE9 & Other Browsers
    if (event.stopPropagation) {
      event.stopPropagation();
    }
    //IE8 and Lower
    else {
      event.cancelBubble = true;
    }
于 2013-07-20T22:23:05.267 回答
0

我最终通过在“onmousemove”事件中添加 event.returnValue = false 来解决我的问题,而不是在“onmousedown”事件中添加它并且它起作用了。它没有回答为什么原始代码错误的问题,但我想将这个发布给看到我的问题的人,而不是浪费他们的时间来帮助我解决我已经解决的问题。感谢您的快速回答,我很感激。

于 2013-07-21T10:29:09.603 回答
0

我也有同样的问题。preventDefault 在 IE 中不起作用。所以我添加了下面的代码来停止传播

if (a_event.preventDefault) {
a_event.preventDefault();
} else if (typeof a_event.returnValue !== "undefined") {
a_event.returnValue = false;
}
于 2017-05-31T10:33:27.073 回答