4

I actually have a problem with including JS file using jQuery. I found many sources but no one work with me. I'm pretty sure that the path of the js file is right. These are my two tries :

The first one (which I prefer) is working with <link> (to include CSS files) but it's not working with <script> tags.

 $('head').append('<script type="text/javascript" src="'+addon+'"></script>');


And the second one is by using get HTTP request. And here is my try :

 $.getScript(addon, function(){});


So, the question is: what is wrong with the first code? Because I tried it before with <link> tags and its working so good.

3
  • 2
    You MUST escape the end tag <\/script> Commented Mar 4, 2013 at 20:48
  • Do you realize they are both get requests? ;) Commented Mar 4, 2013 at 20:55
  • $('head').append('<script type="text/javascript" src="'+addon+'"><\/script>'); Is it right way to append external js in our head section dynamically Commented Jul 3, 2014 at 11:23

4 Answers 4

13

Have you considered:

$('<script />', { type : 'text/javascript', src : addon}).appendTo('head');

This avoids having to manually escape the </script> closing tag.

Sign up to request clarification or add additional context in comments.

1 Comment

@DavidThomas thats the prettiest way I saw to do this..Please refer me to a link where I can get more detail about such a use of jQuery object?..thanks.
4

You MUST escape the end tag <\/script> otherwise you close the scripts prematurely

Comments

1

try $.holdReady(true); $.getScript("sample.js", function() { $.holdReady(false); });

This ensures that your js is fully loaded before the onready object is fired and thus you can be sure that any objects/functions of the dynamically included js are available.

Comments

1

try

$.when(
    $.getScript( "sample.js" ),
    $.getScript( "simple.js" ),
    $.getScript( "jquery.js" ),
    $.Deferred(function( deferred ){
    $( deferred.resolve );
    })
    ).done(function(){
        //place your code here, the scripts are all loaded
});

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.