Bug Tracker

Opened 8 years ago

Closed 8 years ago

Last modified 7 years ago

#10004 closed bug (invalid)

»e.cancelBubble = true;« does often raise "... member not found .." for IE's <= 8

Reported by: peter.seliger@… Owned by:
Priority: low Milestone: None
Component: ajax Version: 1.6.2
Keywords: Cc:
Blocked by: Blocking:

Description

beeing forced to execute »e.cancelBubble = true;« does often raise an error for Internet Explorer Versions 8 and beneath.

»... member not found ...« will be raised in line/row 3172 as of jquery-1.6.2.js. that is the last assignment of method [stopPropagation] of [jQuery.Event.prototype].

after 2 hours of analyzing my and jquery's code execution pingpong I wanted to "hotfix" this problem. But as it turned out a simple replacement of

e.cancelBubble = true;

by

('cancelBubble' in e) && (e.cancelBubble = true);

did not work. Even though logging did assure that there is a property called 'cancelBubble' of [e] accessing this very property by [e.cancelBubble] will fail not always but often enough.

Wrapping »e.cancelBubble = true;« into an ugly try catch block did solve the problem at last. But this surely was not my favourit solution.

thanks for having a look on it - so long - Peter Seliger

Change History (7)

comment:1 Changed 8 years ago by timmywil

Component: unfiledajax
Priority: undecidedlow
Resolution: invalid
Status: newclosed

To stop propogation, use e.stopPropagation() as that will take care of cancelBubble for you. There is no need to manipulate it directly.

comment:2 in reply to:  1 Changed 8 years ago by peter.seliger@…

Replying to timmywil:

To stop propogation, use e.stopPropagation() as that will take care of cancelBubble for you. There is no need to manipulate it directly.

that's what the application code does in the first place ... executing [stopPropagation] of an jquery event object. that results in the behavior I already did describe before. An error occurs within jQuery's implementation of [jQuery.Event.prototype.stopPropagation].

so long - Peter

comment:3 Changed 8 years ago by timmywil

If you have a reduced test case that reproduces the error for us, feel free to open another ticket and we can take a closer look.

comment:4 Changed 8 years ago by anonymous

if (typeof e.cancelBubble !== 'unknown') { e.cancelBubble = true; }

Don't ask why, but it worked... For some reason jQuery or IE returns 'unknown' here in stead of 'undefined'.

comment:5 Changed 7 years ago by Simon

I can't provide a detailed test case, I'm afraid - however, this problem can be checked with the qTip plugin. Here's the bug report:

https://github.com/Craga89/qTip2/issues/38

Maybe someone is able to tear this down to a simple test case.

comment:6 Changed 7 years ago by blyry

I posted a workaround at http://stackoverflow.com/a/10050427/346272, for users getting here from google.

comment:7 Changed 7 years ago by anonymous

Accessing event object whose originalEvent object had been invalidate can occur this problem.. Yes. those who use timeout might run into this problem(IE).

well, if this is the case, it looks like not jQuery's problem... right? provide fiddle for this mess. http://jsfiddle.net/gmeW6/1/

Note: See TracTickets for help on using tickets.