2013-02-24 76 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 
    }); 
});