event.returnValue = false无法正常工作

时间:2013-07-20 21:56:39

标签: javascript javascript-events

我正在使用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
}

我做错了什么?

3 个答案:

答案 0 :(得分:2)

在IE7& 8中,没有事件Object作为函数的参数,而是存在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;
    }

答案 1 :(得分:0)

我最后通过在'onmousemove'事件中添加event.returnValue = false来修复我的问题,而不是'onmousedown'事件并且它有效。它没有回答关于为什么原始代码是错误的问题,但是我想把这个发布给那些看到我的问题的人,不要浪费时间试图帮助我解决我已经解决的问题。谢谢你的快速解答,我很感激。

答案 2 :(得分:0)

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

if (a_event.preventDefault) {
a_event.preventDefault();
} else if (typeof a_event.returnValue !== "undefined") {
a_event.returnValue = false;
}