我正在使用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
}
我做错了什么?
答案 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;
}