X-Git-Url: http://git.asbjorn.biz/?p=jquery.git;a=blobdiff_plain;f=src%2Fdata.js;fp=src%2Fdata.js;h=448e243931bffaf60340cd7d628b046ae286b9a3;hp=ac082dd6e97187071f985be94926af83ad9ceb27;hb=76db8a98220b6d76e98536b9578919bfb70048ed;hpb=f10057bc481753d92ebfb8dfcef5197af5d76972 diff --git a/src/data.js b/src/data.js index ac082dd..448e243 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; } });