views:

49

answers:

1

This question is a follow up question for this question.

If some browsers download JS files even though the user has JS disabled, would it make sense to include JS files using JS to ensure the user isn't forced to download the JS unnecessarily?

For example:

function inc(filename){
    var body = document.getElementsByTagName('body').item(0);
    script = document.createElement('script');
    script.src = filename;
    script.type = 'text/javascript';
    body.appendChild(script);
}

I found the above code here.

Are there any downsides to this code? I haven't tested it yet to make sure it works properly, but it seems pretty straightforward.

I'm trying to avoid having multiple HTTP requests plus the download footprint of the code forced upon users that clearly don't want it.

Also, how would this work if the user enabled JS after initially loading the site?

Does this even matter? Is it worth being concerned over?

+6  A: 

I'm going to step back to this question:

Does this even matter? Is it worth being concerned over?

No, it's not :) The percentage of users who have JavaScript disabled should be very much the minority (in the majority of cases), it's really not worth it to mess with the loading of all users to save a few HTTP requests (which should be cached) for a few, stay with <script> tags.

Also, look at the accepted answer in the previous question, in the initial testing 3/4 browsers don't download it already, so really this is only for Chrome (and possibly IE), the other browsers already save the requests here.

Update: I just tested in IE8, it does not download any included JavaScript when it's disabled, I'm not setup to test any other versions at the moment, but this is true in IE8 at least.

Nick Craver
+1. Unless you have a very specific audience in mind for what you're developing, the number of browsers who don't have JS enabled is negligible, and not worth doing any special perf work for.
quixoto
I figured as much. Thanks Nick! Nice engagement photos btw :)
Bryan Downing
@Bryan - Welcome! and thanks :)
Nick Craver
You're right on that it's overkill if you're doing this in order to prevent non-JS enabled browsers from downloading. But I can see the use of downloading on demand if you're having a one page JS driven page with let's say ten tabs and each tab requires a chunk of specific JS. It wouldn't be necessary to load all ten tabs at once, but load on demand (when the user clicks the tab).
Gert G
@Gert G: Yes, definitely, but that is, as they say, another story for another time. At least YUI (and probably others) expose sophisticated infrastructure for on-demand JS module loading, if that's what you want (which is much different from the thrust of this question).
quixoto
@quixoto - I reread his question and you're right.
Gert G