Skip to content
Permalink
Browse files

Make sure that expando properties aren't set on embed, applet, or obj…

…ect elements. An uncatchable exception is thrown and we must avoid it. Fixes #1675 and #2349.
  • Loading branch information
jeresig committed Dec 7, 2009
1 parent 7d36ccf commit 59802928566b6be3a66d65e77c2418fff37e6f5f
Showing with 17 additions and 1 deletion.
  1. +16 −0 src/data.js
  2. +1 −1 src/manipulation.js
@@ -6,7 +6,19 @@ jQuery.extend({

expando:expando,

// The following elements throw uncatchable exceptions if you
// attempt to add expando properties to them.
noData: {
"embed": true,
"object": true,
"applet": true
},

data: function( elem, name, data ) {
if ( jQuery.noData[elem.nodeNode.toLowerCase()] ) {
return;
}

elem = elem == window ?
windowData :
elem;
@@ -43,6 +55,10 @@ jQuery.extend({
},

removeData: function( elem, name ) {
if ( jQuery.noData[elem.nodeNode.toLowerCase()] ) {
return;
}

elem = elem == window ?
windowData :
elem;
@@ -463,7 +463,7 @@ jQuery.extend({

function cleanData( elems ) {
for ( var i = 0, elem, id; (elem = elems[i]) != null; i++ ) {
if ( (id = elem[expando]) ) {
if ( !jQuery.noData[elem.nodeNode.toLowerCase()] && (id = elem[expando]) ) {
delete jQuery.cache[ id ];
}
}

1 comment on commit 5980292

@jeresig

This comment has been minimized.

Copy link
Member Author

jeresig commented on 5980292 Dec 7, 2009

Fixed obvious dumb-ness in ed93204.

Please sign in to comment.
You can’t perform that action at this time.