aboutsummaryrefslogtreecommitdiffstats
path: root/src/data.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/data.js')
-rw-r--r--src/data.js20
1 files changed, 17 insertions, 3 deletions
diff --git a/src/data.js b/src/data.js
index ac082dd6e..448e24393 100644
--- a/src/data.js
+++ b/src/data.js
@@ -17,12 +17,13 @@ jQuery.extend({
// attempt to add expando properties to them.
noData: {
"embed": true,
- "object": true,
+ // Ban all objects except for Flash (which handle expandos)
+ "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",
"applet": true
},
data: function( elem, name, data ) {
- if ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {
+ if ( !jQuery.acceptData( elem ) ) {
return;
}
@@ -85,7 +86,7 @@ jQuery.extend({
},
removeData: function( elem, name ) {
- if ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {
+ if ( !jQuery.acceptData( elem ) ) {
return;
}
@@ -126,6 +127,19 @@ jQuery.extend({
delete cache[ id ];
}
}
+ },
+
+ // A method for determining if a DOM node can handle the data expando
+ acceptData: function( elem ) {
+ if ( elem.nodeName ) {
+ match = jQuery.noData[ elem.nodeName.toLowerCase() ];
+
+ if ( match ) {
+ return !(match === true || elem.getAttribute("classid") !== match);
+ }
+ }
+
+ return true;
}
});