aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorbasil.belokon <basil.belokon@gmail.com>2017-12-03 15:58:09 +0600
committerTimmy Willison <4timmywil@gmail.com>2018-01-16 11:39:16 -0500
commit5d3a968e031ab8dff5c07e1d6bb4f196fb82bfa0 (patch)
tree8cb0c8082469f637c38ca90b5dc4c60b9c54f57f /src
parent428ee4a62488457a1bc568e7475cbf65b1feaf93 (diff)
downloadjquery-5d3a968e031ab8dff5c07e1d6bb4f196fb82bfa0.tar.gz
jquery-5d3a968e031ab8dff5c07e1d6bb4f196fb82bfa0.zip
Manipulation: Add support for scripts with module type
Fixes gh-3871 Close gh-3869
Diffstat (limited to 'src')
-rw-r--r--src/core/DOMEval.js18
-rw-r--r--src/manipulation.js4
-rw-r--r--src/manipulation/var/rscriptType.js2
3 files changed, 19 insertions, 5 deletions
diff --git a/src/core/DOMEval.js b/src/core/DOMEval.js
index c49c12e5e..199ec9518 100644
--- a/src/core/DOMEval.js
+++ b/src/core/DOMEval.js
@@ -3,12 +3,26 @@ define( [
], function( document ) {
"use strict";
- function DOMEval( code, doc ) {
+ var preservedScriptAttributes = {
+ type: true,
+ src: true,
+ noModule: true
+ };
+
+ function DOMEval( code, doc, node ) {
doc = doc || document;
- var script = doc.createElement( "script" );
+ var i,
+ script = doc.createElement( "script" );
script.text = code;
+ if ( node ) {
+ for ( i in preservedScriptAttributes ) {
+ if ( node[ i ] ) {
+ script[ i ] = node[ i ];
+ }
+ }
+ }
doc.head.appendChild( script ).parentNode.removeChild( script );
}
diff --git a/src/manipulation.js b/src/manipulation.js
index ae713fe29..142e296ad 100644
--- a/src/manipulation.js
+++ b/src/manipulation.js
@@ -194,14 +194,14 @@ function domManip( collection, args, callback, ignored ) {
!dataPriv.access( node, "globalEval" ) &&
jQuery.contains( doc, node ) ) {
- if ( node.src ) {
+ if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) {
// Optional AJAX dependency, but won't run scripts if not present
if ( jQuery._evalUrl ) {
jQuery._evalUrl( node.src );
}
} else {
- DOMEval( node.textContent.replace( rcleanScript, "" ), doc );
+ DOMEval( node.textContent.replace( rcleanScript, "" ), doc, node );
}
}
}
diff --git a/src/manipulation/var/rscriptType.js b/src/manipulation/var/rscriptType.js
index 7237c8a31..cd1430a7e 100644
--- a/src/manipulation/var/rscriptType.js
+++ b/src/manipulation/var/rscriptType.js
@@ -1,5 +1,5 @@
define( function() {
"use strict";
- return ( /^$|\/(?:java|ecma)script/i );
+ return ( /^$|^module$|\/(?:java|ecma)script/i );
} );