简体   繁体   中英

event.returnValue = false of an event

I am working on a scrollbar in Javascript. All works fine except for one problem. I notice that while dragging the scrollbar, if I move the mouse over the context that is being scrolled, the content gets selected. I don't want that to happen, so I used the preventDefault method from the event object, which worked perfectly for IE9 and the other modern browsers. But on IE7 and IE8, the problem persists. I did some searches and found that I should set the returnValue parameter of the event object to false. But the problem still persists. Also, if I write alert(window.event.returnValue) it pops up 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
}

What am I doing wrong?

In IE7&8 there is no event Object as a parameter to the function, instead there exists window.event. Try

window.event.cancelBubble = true

to stop the propagation. To avoid problems with FireFox etc. do something like this:

    if (!event)
       event = window.event;

    //IE9 & Other Browsers
    if (event.stopPropagation) {
      event.stopPropagation();
    }
    //IE8 and Lower
    else {
      event.cancelBubble = true;
    }

I fixed my problem in the end by adding event.returnValue = false in the 'onmousemove' event, instead on 'onmousedown' event and it worked. It doesn't answer the question about why the orginal code is wrong, but I wanted to post this for people that see my question, to not waste their time in trying to help me with a problem that I have already fixed. Thank you for your quick answers, I appreciate.

I too had the same problem. preventDefault was not working in IE. so I added the below code to stop propagation

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM