|  | define( [ | 
|  | "../var/document" | 
|  | ], function( document ) { | 
|  | "use strict"; | 
|  |  | 
|  | var preservedScriptAttributes = { | 
|  | type: true, | 
|  | src: true, | 
|  | nonce: true, | 
|  | noModule: true | 
|  | }; | 
|  |  | 
|  | function DOMEval( code, node, doc ) { | 
|  | doc = doc || document; | 
|  |  | 
|  | var i, val, | 
|  | script = doc.createElement( "script" ); | 
|  |  | 
|  | script.text = code; | 
|  | if ( node ) { | 
|  | for ( i in preservedScriptAttributes ) { | 
|  |  | 
|  | // Support: Firefox 64+, Edge 18+ | 
|  | // Some browsers don't support the "nonce" property on scripts. | 
|  | // On the other hand, just using `getAttribute` is not enough as | 
|  | // the `nonce` attribute is reset to an empty string whenever it | 
|  | // becomes browsing-context connected. | 
|  | // See https://github.com/whatwg/html/issues/2369 | 
|  | // See https://html.spec.whatwg.org/#nonce-attributes | 
|  | // The `node.getAttribute` check was added for the sake of | 
|  | // `jQuery.globalEval` so that it can fake a nonce-containing node | 
|  | // via an object. | 
|  | val = node[ i ] || node.getAttribute && node.getAttribute( i ); | 
|  | if ( val ) { | 
|  | script.setAttribute( i, val ); | 
|  | } | 
|  | } | 
|  | } | 
|  | doc.head.appendChild( script ).parentNode.removeChild( script ); | 
|  | } | 
|  |  | 
|  | return DOMEval; | 
|  | } ); |