I don't understand the reason for replacing this:
<script src="js/example.js"></script>
with this:
$.getScript('js/example.js', function() {
alert('Load was performed.');
});
Is there a particular reason to use the jQuery version?
I don't understand the reason for replacing this:
<script src="js/example.js"></script>
with this:
$.getScript('js/example.js', function() {
alert('Load was performed.');
});
Is there a particular reason to use the jQuery version?
The only reason I can think of is that you get the callback when the script is loaded. But you can get that callback using a script
tag, too, by using the load
event (or on really old IE, onreadystatechange
).
In contrast, there are several negatives to doing it this way, not least that getScript
is subject to the Same Origin Policy, whereas a script
tag is not.
Even if you need to load a script dynamically (and there are several reasons you might need to do that), frankly unless you really need the callback, I'd say you're better off just loading the script by adding a script
tag:
$('head:first').append("<script type='text/javascript' src='js/examplejs'><\/script>");
(Note: You need the otherwise-unnecessary \
in the ending tag in the above to avoid prematurely ending the script tag this code exists within, if it's in an inline script tag.)
script
tags added in this way are not subject to the Same Origin Policy. If you want the load
callback, then:
$("<script type='text/javascript' src='js/examplejs'><\/script>")
.on("load", function() {
// loaded
})
.appendTo('head:first');
(As I said, for really old IE, you'd have to do more than that, but you shouldn't need to deal with them these days.)
I can think of three reasons you might use the jQuery form:
<script>
tags at the end of the document, only without the syntactic weirdness.<script>
mechanism is not available to scripts that do not live in the HTML document itself; that is, if a script included on the page with <script>
wants to load a script, it has no option but to use a JavaScript-based approach, such as calling the jQuery function.$.getScript()
over any other particular script-based approach, only pointing out why one might use it instead of <script>
. +1 to your answer for pointing out the same-origin policy difference. –
Heterotrophic No need to do that..
You do that if you want to load the script dynamically (when needed, and not from the beginning)
The script might depend on jQuery, so it would be a way to prevent the browser trying to load it if it hasn't loaded jQuery.
There are a number of reasons that jQuery might not load, from a simple network failure to a CDN not being whitelisted by a NoScript user.
maybe to control when a script is loaded? On a javascript heavy page, it may be worth waiting to load some things that are non essential until after essential things are loaded.
© 2022 - 2024 — McMap. All rights reserved.
getScript
specifically, which is (as I noted) subject to restrictions thatscript
tags are not. – Pisarik