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
2 changed files with 17 additions and 1 deletions
16
src/data.js
16
src/data.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 ];
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue