Skip to content

Commit

Permalink
Allow data to be bound to Flash objects (but still stopping short of …
Browse files Browse the repository at this point in the history
…attaching to applets. Fixes #6121.
  • Loading branch information
jeresig committed Sep 24, 2010
1 parent f10057b commit 76db8a9
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 3 deletions.
20 changes: 17 additions & 3 deletions src/data.js
Expand Up @@ -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;
}

Expand Down Expand Up @@ -85,7 +86,7 @@ jQuery.extend({
},

removeData: function( elem, name ) {
if ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {
if ( !jQuery.acceptData( elem ) ) {
return;
}

Expand Down Expand Up @@ -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;
}
});

Expand Down
18 changes: 18 additions & 0 deletions test/unit/data.js
Expand Up @@ -24,6 +24,24 @@ test("expando", function(){
equals( id.foo, "bar", "jQuery.data worked correctly" );
});

test("jQuery.acceptData", function() {
expect(7);

ok( jQuery.acceptData( document ), "document" );
ok( jQuery.acceptData( document.documentElement ), "documentElement" );
ok( jQuery.acceptData( {} ), "object" );
ok( !jQuery.acceptData( document.createElement("embed") ), "embed" );
ok( !jQuery.acceptData( document.createElement("applet") ), "applet" );

var flash = document.createElement("object");
flash.setAttribute("classid", "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000");
ok( jQuery.acceptData( flash ), "flash" );

var applet = document.createElement("object");
applet.setAttribute("classid", "clsid:8AD9C840-044E-11D1-B3E9-00805F499D93");
ok( !jQuery.acceptData( applet ), "applet" );
});

test("jQuery.data", function() {
expect(13);
var div = document.createElement("div");
Expand Down

0 comments on commit 76db8a9

Please sign in to comment.