@@ -6,26 +6,36 @@ function onScriptDisabled() {
66 onScriptDisabled = ( ) => { } ;
77 let refresh = false ;
88 for ( let noscript of document . querySelectorAll ( "noscript" ) ) {
9+
910 // force show NOSCRIPT elements content
10- let replacement = createHTMLElement ( "span" ) ;
11- replacement . innerHTML = noscript . innerHTML ;
12- noscript . replaceWith ( replacement ) ;
11+ let replacement = document . createRange ( ) . createContextualFragment ( noscript . innerHTML ) ;
1312 // emulate meta-refresh
14- let meta = replacement . querySelector ( 'meta[http-equiv="refresh"]' ) ;
15- if ( meta ) {
13+ for ( let meta of replacement . querySelectorAll ( 'meta[http-equiv="refresh"]' ) ) {
1614 refresh = true ;
1715 document . head . appendChild ( meta ) ;
16+ console . log ( `State %s, emulating` , document . readyState , meta ) ;
17+ }
18+
19+ if ( noscript . closest ( "head" ) && document . body ) {
20+ document . body . insertBefore ( noscript , document . body . firstChild ) ;
1821 }
22+ noscript . replaceWith ( replacement ) ;
1923 }
2024 if ( refresh ) {
2125 let html = document . documentElement . outerHTML ;
22- window . addEventListener ( "load" , e => {
23- if ( ! e . isTrusted ) return ;
26+ let rewrite = ( ) => {
2427 let document = window . wrappedJSObject ? window . wrappedJSObject . document : window . document ;
2528 document . open ( ) ;
2629 document . write ( html ) ;
2730 document . close ( ) ;
28- } ) ;
31+ } ;
32+ if ( document . readyState === "complete" ) {
33+ rewrite ( ) ;
34+ } else {
35+ window . addEventListener ( "load" , e => {
36+ if ( e . isTrusted ) rewrite ( ) ;
37+ } ) ;
38+ }
2939 }
3040 {
3141 let eraser = {
0 commit comments