- From: Ian Hickson <ian@hixie.ch>
- Date: Tue, 12 Oct 2010 18:59:17 +0000 (UTC)
- To: Boris Zbarsky <bzbarsky@MIT.EDU>
- cc: Getify <getify@gmail.com>, public html <public-html@w3.org>
On Tue, 12 Oct 2010, Boris Zbarsky wrote:
> On 10/12/10 6:52 AM, Ian Hickson wrote:
> > For those of us who aren't familiar with the products mentioned so far
> > on this thread, could someone explain why it is interesting to be able
> > to delay the execution of a batch of scripts until after all those
> > scripts have been downloaded?
>
> More precisely, the requirement is that a batch of scripts run in a
> certain order because some of them depend on others in the batch.
>
> > It seems to me like it would be simpler to either have all the scripts
> > download and execute as they become available, with any dependencies
> > resolved by having the scripts register to be notified when their
> > dependencies become available
>
> The use case is to use off-the-shelf scripts that do no such
> registration and are not even under the control of the page loading them
> (e.g. Google API scripts, etc) but nevertheless have dependencies on
> each other.
It seems like this is already possible using <script onload> (optionally
in conjunction with <link rel=prefetch> to make the UA aware that it can
start downloading things early):
function loadScript(scriptSrc, next) {
var l = document.createElement('link');
l.rel = 'prefetch';
l.href = scriptSrc;
document.getElementsByTagName('head')[0].appendChild(l);
return function () {
var s = document.createElement('script');
s.src = scriptSrc;
s.onload = next;
document.body.appendChild(s);
};
}
loadScript('a.js', loadScript('b.js', loadScript('c.js')))();
(There are obviously more straight-forward ways to do it if you prefer
less functional styles.)
--
Ian Hickson U+1047E )\._.,--....,'``. fL
http://ln.hixie.ch/ U+263A /, _.. \ _\ ;`._ ,.
Things that are impossible just take longer. `._.-(,_..'--(,_..'`-.;.'
Received on Tuesday, 12 October 2010 18:59:47 UTC