原始javascript应该在.js文件中 - 如何包含?

时间:2013-01-04 20:12:49

标签: javascript jquery include external

假设我有一个如下页面

<html><head></head><body><!--STUFF-->
   <script>
       if(SomeBooleanVariable) {
           $.getScript('js/file.js');
       }
    </script>
 </body></html>

我的file.js文件只包含没有包装的原始jQuery事件。它完全如下:

 $(document).on("eventHere", "classHere", function(e) {
   //Stuff
 });


 $(document).on("eventHere", "classHere", function(e) {
   //Stuff
 });

这根本行不通。当我将file.js的内容直接包含到HTML中时,它工作正常,但JS似乎没有被正确包含。我试过把“警报(3);”在file.js的顶部,但它不会触发。我尝试过以下方法:

 $("head").append("<script src=\"js/file.js\" />");
 $(document).append("<script src=\"js/file.js\" />");
 -and-
 document.write("<script src=\"js/file.js\" />");

1 个答案:

答案 0 :(得分:1)

如果要动态加载.js文件,请将代码更改为:

if(SomeBooleanVariable) {
    $.getScript("ajax/test.js")
    .done(function(script, textStatus) {
        console.log(textStatus);
    })
    .fail(function(jqxhr, settings, exception) {
        console.log("Triggered ajaxError handler.");
    });  

看看你是否在控制台中出现任何错误

可能是,例如,您正在使用mod_rewrite,并且jQuery尝试相对于您的子页面所在的“文件夹”加载脚本。示例:您是@ http://www.example.com/link-to-subpage/。在这种情况下,jQuery将尝试加载http://www.example.com/link-to-subpage/js/file.js,而它位于@ http://www.example.com/js/file.js。在这种情况下,请使用绝对路径。所以,而不是:

js/file.js

写:

/js/file.js