Why you should avoid using document.write for scripts injection
About time. Just do as Google/Facebook do:<p><pre><code>    var _script = document.createElement('script');

    _script.src = '//blablabla.bla/bla.js';

    /* _script.async = '' */

    (document.body || document.getElementsByTagName('body')[0])
      .appendChild(_script);
</code></pre>
You could append to the <i>head</i> instead (a la Google Analytics universal snippet) with the async attribute set to '' or 'async' or <i>true</i> or <i>!0</i> or whatever you fancy.<p>Works for CSS too, though it'd be better to append your <i>link</i> element to the <i>head</i> despite what Google says.<p>Handy for asynchronously loading fonts without <i>link rel="preload"</i> which is poorly supported.<p>You could also do this with a single <i>style</i> element in the <i>body</i> containing your <i>@font-face</i>, but that's a crap idea if you want to use Google Fonts, for instance.<p>Obviously with CSS, it's worth including a regular <i>link</i> element in a <i>noscript</i> in the <i>head</i>.