aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/data/accepts.js4
-rw-r--r--test/data/core/aliased.html24
-rw-r--r--test/unit/core.js7
-rw-r--r--test/unit/data.js22
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() {