diff options
-rw-r--r-- | src/data/accepts.js | 4 | ||||
-rw-r--r-- | test/data/core/aliased.html | 24 | ||||
-rw-r--r-- | test/unit/core.js | 7 | ||||
-rw-r--r-- | test/unit/data.js | 22 |
4 files changed, 52 insertions, 5 deletions
diff --git a/src/data/accepts.js b/src/data/accepts.js index f3abe06af..291c7b475 100644 --- a/src/data/accepts.js +++ b/src/data/accepts.js @@ -12,8 +12,8 @@ jQuery.acceptData = function( owner ) { // - Node.DOCUMENT_NODE // - Object // - Any - return owner.nodeType ? - owner.nodeType === 1 || owner.nodeType === 9 : true; + /* jshint -W018 */ + return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); }; return jQuery.acceptData; diff --git a/test/data/core/aliased.html b/test/data/core/aliased.html new file mode 100644 index 000000000..ed06606af --- /dev/null +++ b/test/data/core/aliased.html @@ -0,0 +1,24 @@ +<!doctype html> +<html> +<head> + <meta http-equiv="Content-type" content="text/html; charset=utf-8"/> + <title>alias-masked DOM properties (#14074)</title> + <script> + var errors = []; + window.onerror = function( errorMessage, filePath, lineNumber ) { + errors.push( errorMessage ); + }; + </script> + <script src="../../jquery.js"></script> +</head> +<body> + <form> + <input type="text" id="nodeName"/> + </form> + <script> + jQuery(function() { + window.parent.iframeCallback( errors ); + }); + </script> +</body> +</html> diff --git a/test/unit/core.js b/test/unit/core.js index 5677ddc3d..d00f0fd76 100644 --- a/test/unit/core.js +++ b/test/unit/core.js @@ -1445,3 +1445,10 @@ testIframeWithCallback( "document ready when jQuery loaded asynchronously (#1365 expect( 1 ); equal( true, ready, "document ready correctly fired when jQuery is loaded after DOMContentLoaded" ); }); + +testIframeWithCallback( "Tolerating alias-masked DOM properties (#14074)", "core/aliased.html", + function( errors ) { + expect( 1 ); + deepEqual( errors, [], "jQuery loaded" ); + } +); diff --git a/test/unit/data.js b/test/unit/data.js index 086067cdc..b63c79b92 100644 --- a/test/unit/data.js +++ b/test/unit/data.js @@ -766,14 +766,30 @@ test(".data doesn't throw when calling selection is empty. #13551", function() { } }); -test("jQuery.acceptData", 6, function() { +test("jQuery.acceptData", 11, function() { + var flash, applet; + 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" ); + + flash = document.createElement( "object" ); + flash.setAttribute( "classid", "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" ); + ok( jQuery.acceptData( flash ), "flash" ); - ok( !jQuery.acceptData( document.createComment("") ), "comment" ); - ok( !jQuery.acceptData( document.createTextNode("") ), "text" ); + applet = document.createElement( "object" ); + applet.setAttribute( "classid", "clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" ); + ok( jQuery.acceptData( applet ), "applet" ); + + ok( !jQuery.acceptData( document.createComment( "" ) ), "comment" ); + ok( !jQuery.acceptData( document.createTextNode( "" ) ), "text" ); ok( !jQuery.acceptData( document.createDocumentFragment() ), "documentFragment" ); + + ok( jQuery.acceptData( + jQuery( "#form" ).append( "<input id='nodeType'/><input id='nodeName'/>" )[ 0 ] ), + "form with aliased DOM properties" ); }); test("Check proper data removal of non-element descendants nodes (#8335)", 1, function() { |