5b document.write scripts block in Firefox
This is the second of five quick posts about some browser quirks that have come up in the last few weeks.
Scripts loaded using document.write block other downloads in Firefox.
document.write was invented. That problem was made a bzillion times worse when ads decided to use
document.write to insert scripts into the content publisher’s page. It’s one line of code:
Fortunately, most of today’s newer browsers load scripts in parallel including scripts added via
document.write. But a few weeks ago I noticed that Firefox 3.6 had some weird blocking behavior in a page with ads, and tracked it down to a script added using
The document.write scripts test page demonstrates the problem. It has four scripts. The first and second are inserted using
document.write. The third and fourth are loaded the normal way (via HTML using SCRIPT SRC). All four scripts are configured to take 4 seconds to download. In IE8, Chrome 4, Safari 4, and Opera 10.10, the total page load time is ~4 seconds. All the scripts, even the ones inserted using
document.write, are loaded in parallel. In Firefox, the total page load time is 12 seconds (tested on 2.0, 3.0, and 3.6). The first
document.write script loads from 1-4 seconds, the second
document.write scripts loads from 5-8 seconds, and the final two normal scripts are loaded in parallel from 9-12 seconds.
The issues with
document.write are getting more well known. Some 3rd party code snippets (including Google Analytics) are switching away from
document.write. But most 3rd party snippets still use
document.write to insert their code into the publisher’s page. Here’s one more reason to avoid
The five posts in this series are:
- 5a Missing schema double download
- 5b document.write scripts block in Firefox
- 5c media=print stylesheets
- 5d dynamic stylesheets
- 5e speculative background images