簡體   English   中英

載入另一個js文件的Javascript

[英]Javascript to load another js file

我正在嘗試從JS文件加載另一個JS文件。

在我的JavaScript文件run.js中 ,我具有以下內容:

document.write("<script type='text/javascript' src='my_script.js'></script>");
alert(nImages);

my_script.js端,我有以下內容:

<SCRIPT language="JavaScript" type="text/javascript">
<!--
nImages = 6;
//-->
</SCRIPT>

但是我似乎nImagesmy_script.js文件中警告nImages

您可以這樣做:

var script = document.createElement('script');
script.src = 'my_script.js';
script.type = 'text/javascript';

script.onload = function () {
    alert(nImages);
};

document.getElementsByTagName('head')[0].appendChild(script);

您不應在腳本文件中使用HTML。 您的腳本文件my_script.js應該只包含此文件。

nImages = 6;

附加說明:您不需要language="JavaScript"<!--//--> 這些是現代瀏覽器(甚至IE6)都不需要的舊約定。 我還避免在您的JS中使用document.write() ,因為它會影響性能。 您可能需要查看諸如RequireJS之類的庫,該庫提供了一種更好的方式來加載頁面中的其他JS文件。

在Github上也有一個受Steve Souders啟發的代碼片段,片段通過直接JS加載另一個文件。

var theOtherScript = 'http://example.com/js/script.js';

var el = document.createElement('script');
el.async = false;
el.src = theOtherScript;
el.type = 'text/javascript';

(document.getElementsByTagName('HEAD')[0]||document.body).appendChild(el);

這會將其他腳本附加到元素(如果存在)或頁面的。

Javascript文件中不應包含HTML。 它們應該完全由Javascript代碼組成, so my_script.js應該僅包含:

nImages = 6;

這仍然不起作用,因為當您將新的腳本標記寫入文檔時,它不會立即運行。 可以確保run.jsmy_script.js啟動之前完成運行,因此在您對其進行警報時nImages是未定義的,然后在以后變為6。 您會看到這可行:

document.write("<script type='text/javascript' src='my_script.js'></script>");

function call_on_load(){
    alert(nImages);
}

如果my_script.js的內容是:

nImages = 6;
call_on_load();

編輯

由於您在評論中說無法編輯my_script.js ,因此可以執行此操作,盡管它並不是一個很好的解決方案:

// Force nImages to be undefined
var undefined;
window.nImages = undefined;

document.write("<script type='text/javascript' src='my_script.js'></script>");

(function is_loaded(cb){
    if(typeof window.nImages == 'undefined')
        setTimeout(function(){ is_loaded(cb); }, 100);
    else
        cb();
})(function(){
    // This is executed after the script has loaded
    alert(nImages);
});

但是,這不是一個很好的解決方案,因為如果加載腳本時出錯,它將無限期地繼續輪詢。

編輯

您在評論中發布了要包含的文件,該文件的頂部為<SCRIPT 該文件無用,並且您無法在客戶端執行任何操作。 您必須編寫服務器端腳本以將文件加載為文本,在這種情況下,您可以將其解析為所需的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM