2013-02-24 66 views
0

我有一个处理所有jQuery函数的js.js脚本。 我的文档后,打电话给他们一一准备好了,像这样:文档准备好后调用外部js脚本

function 1(){} 
function 2(){} 

jQuery(document).ready(function($){ 
    function 1(); 
    function 2(); 
}); 

我也有一个外部JavaScript这是我自己的网站的标签内拨打:

<script type="text/javascript" src="myscript"></script> 

与该脚本的问题是它从外部网站加载,有时非常缓慢,减慢我的整个网站。

文档准备好后,我可以在我的js.js文件中加载它吗?让我们说功能2()之前?

任何想法?

回答

5

您正在寻找$.getScript(url),确实如此。

+0

我能有这样的事情? if($。getScript(url)){do something} – webmasters 2013-02-24 22:09:24

+0

您可以使用'document.write'以及顺便说一句。不是最优雅的方法,但也可以。 – Mahn 2013-02-24 22:10:11

+0

@webmasters:不;它是异步的。 – SLaks 2013-02-25 03:45:17

0

首先,请确保将您的<script type="text/javascript" src="myscript"></script>放在您的html页末尾,即</body>结束标记的前面。

此外,您可以使用RequireJS,这是一个脚本,允许您在需要时加载js文件,即使在加载整个页面后也是如此。 您可以通过自己的脚本通过Ajax加载脚本并手动管理工作流程,但我建议您改用这个强大的脚本。

1

除了SLaks`答案,您可以使用库来组织您的JavaScript文件包含。如果你有很多文件和依赖关系,它会很有用。例如,

看看head.js

head 
    .js("jquery.js", "selectivizr.js") // these are loaded in parallel 
    .js("jquery-ui.js"); // this is loaded after the scripts above 

head.ready(function() { 
    jQuery(document).ready(function($) { 
    function1(); 
    head.js("other-script.js", function() { 
     function2(); 
     // your code 
    }); 
    }); 
}); 

function 1(){} 
function 2(){} 

一个更好的解决办法是组织你所有的JavaScript功能集成到单独的文件,只是使用headjs加载:

head 
    .js("jquery.js", "selectivizr.js") // these are loaded in parallel 
    .js("jquery-ui.js"); // this is loaded after the scripts above 
    .js("app1.js"); // contains function1() 
    .js("app2.js"); // contains function2() 

head.ready(function() { 
    jQuery(document).ready(function($) {  
    // your code 
    }); 
});