Make sure that expando properties aren't set on embed, applet, or object elements. An uncatchable exception is thrown and we must avoid it. Fixes #1675 and #2349.
This commit is contained in:
parent
7d36ccfa8e
commit
5980292856
16
src/data.js
16
src/data.js
|
@ -6,7 +6,19 @@ jQuery.extend({
|
||||||
|
|
||||||
expando:expando,
|
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 ) {
|
data: function( elem, name, data ) {
|
||||||
|
if ( jQuery.noData[elem.nodeNode.toLowerCase()] ) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
elem = elem == window ?
|
elem = elem == window ?
|
||||||
windowData :
|
windowData :
|
||||||
elem;
|
elem;
|
||||||
|
@ -43,6 +55,10 @@ jQuery.extend({
|
||||||
},
|
},
|
||||||
|
|
||||||
removeData: function( elem, name ) {
|
removeData: function( elem, name ) {
|
||||||
|
if ( jQuery.noData[elem.nodeNode.toLowerCase()] ) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
elem = elem == window ?
|
elem = elem == window ?
|
||||||
windowData :
|
windowData :
|
||||||
elem;
|
elem;
|
||||||
|
|
|
@ -463,7 +463,7 @@ jQuery.extend({
|
||||||
|
|
||||||
function cleanData( elems ) {
|
function cleanData( elems ) {
|
||||||
for ( var i = 0, elem, id; (elem = elems[i]) != null; i++ ) {
|
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 ];
|
delete jQuery.cache[ id ];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue