From: Timo Tijhof Date: Thu, 6 Aug 2015 02:55:53 +0000 (-0700) Subject: Replace native "document.write" with deprecated fallback X-Git-Tag: 1.31.0-rc.0~10502 X-Git-Url: http://git.cyclocoop.org//%22%22.str_replace%28%27%22%27%2C?a=commitdiff_plain;h=d861c6593a55c67fef5019a2f3289f17c0c8bd21;p=lhc%2Fweb%2Fwiklou.git 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 --- 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 ) );