From d861c6593a55c67fef5019a2f3289f17c0c8bd21 Mon Sep 17 00:00:00 2001 From: Timo Tijhof Date: Wed, 5 Aug 2015 19:55:53 -0700 Subject: [PATCH] Replace native "document.write" with deprecated fallback In most browsers, calling "document.write" after the document is ready results in the document being re-created with the specified content (effectively replacing with blank page). While this is a browser issue, mitigate this by replacing the method with a fallback (wrapped in "mw.log.deprecate") that just appends the given HTML to the document body. Note that scripts do not execute when appended as HTML, they will become dormant elements. It'll work for raw content as a basic fallback, but it should become apparent to the end user that the code needs to be upgraded. Bug: T108139 Change-Id: Ic9056d7a779f234a28ddad005fd4d76f2e750fcc --- resources/src/mediawiki.legacy/wikibits.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/resources/src/mediawiki.legacy/wikibits.js b/resources/src/mediawiki.legacy/wikibits.js index 32cd79a5ba..1f01110955 100644 --- a/resources/src/mediawiki.legacy/wikibits.js +++ b/resources/src/mediawiki.legacy/wikibits.js @@ -215,4 +215,10 @@ win.importScript = importScript; win.importStylesheet = importStylesheet; + // Replace document.write with basic html parsing that appends + // to the to avoid blanking pages. Added JavaScript will not run. + mw.log.deprecate( document, 'write', function ( html ) { + $( 'body' ).append( $.parseHTML( html ) ); + }, 'Use jQuery or mw.loader.load instead.' ); + }( mediaWiki, jQuery ) ); -- 2.20.1