[英]Include a javascript library for calculation
我想在javascript中做一些非常簡單的事情。 我有一個main.js文件,需要在math.js中調用一個計算方法。
如果我在index.html中包含這兩個帶腳本標記的文件,首先是math.js然后是main.js,我保證math.js在我可以在main.js中使用之前已經完成加載了嗎?
如果沒有,我是否需要像我在這里閱讀的那樣做一些過度的黑客攻擊如何在另一個JavaScript文件中包含JavaScript文件? 甚至更糟,因為我甚至無法在該鏈接中看到實際上如何考慮依賴性。
更新:為什么我不喜歡Dashcode似乎做什么如何添加我的庫來加載Dashcode部分,即只使用document.write('...')? 事實上,如果庫大於main.js,document.write在非常慢的連接上是否足夠健壯?
如果存在此變量,則在math.js中設置變量並在main.js中進行校對。
var mathLoaded = true;
在main.js中:
function loaded() {
return ((typeof mathLoaded) !== 'undefined');
}
編輯:
現在你可以啟動一個等待函數,直到它被加載:
function wait() {
if(loaded()) {
//doSomething();
} else {
window.setTimeout(function() { wait(); }, 0);
}
}
window.setTimeout(function() { wait(); }, 0);
您可以查看RequireJS以確保加載依賴項
此外,JS被加載並解析為自上而下。 首先在源中獲取先獲取並首先解析(但它不保證順序,因為某些文件的服務器可能很慢)。 這就是為什么建議如果你使用庫和工具包(比如jQuery和其他),它們應該先加載它們。
不,你不是。 可以按任何順序加載文件。 您通常希望從文檔load
事件中調用初始代碼。 一旦加載了頁面所需的所有文件,它甚至會觸發。
為什么不使用window.onload
?
window.onload = function () {
//your code here.
}
或者使用跨瀏覽器的addEvent
函數真的很花哨?
var libJS = {
addEvent: function (obj, type, fn) {
if (obj.addEventListener) {
obj.addEventListener(type, fn, false);
return true;
} else if (obj.attachEvent) {
obj['e' + type + fn] = fn;
obj[type + fn] = function () {
obj['e' + type + fn](window.event);
}
var r = obj.attachEvent('on' + type, obj[type + fn]);
return r;
} else {
obj['on' + type] = fn;
return true;
}
}
}
它正確地附加了事件的功能......
libJS.addEvent(window, 'load', someMainJsFunction); //add to window.onload
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.