林開發HTML應用程序結構如下:爲什麼基金會全球有時未定義?
<html>
<head>
<!-- other head elements -->
<script src="jquery.js?_v=3736f12"></script>
<script src="error.js?_v=291bb66"></script>
</head>
<body>
<!-- other body elements -->
<script src="foundation.js?_v=880a16f"></script>
<script src="my_lib.js?_v=1c3b21e"></script>
</body>
</html>
什麼error.js
做的是,它偵聽window.onerror事件被觸發時,它通過AJAX發送錯誤信息到服務器給我們通知開發商。這種方式我們知道當用戶對某事的javascript投訴。
my_lib.js
是一個相當大的庫,它執行大量任務,它通常建立在Foundation框架及其在JavaScript結構中的my_lib.js之前包含的JavaScript庫中。
現在我可以讓我的問題。這些天來,我們越來越相似的錯誤:
- 類型錯誤:window.Foundation未定義
- 類型錯誤:不確定是不是(評估「window.Foundation.Abide」)
- 遺漏的類型錯誤的對象:不能讀取未定義的屬性「下拉」(代碼Foundation.Dropdown)
這些錯誤通常來自基金會全球Foundation
內my_lib.js的用途和各種userAgents,但更多的是移動設備,但不完全。錯誤的發生時間通常是在準備好事件之前,或者有時在就緒事件和加載事件之間。瘋狂的事情是,這些錯誤並不總是來自同一用戶(即使他們在同一頁面上兩次也是如此),他們有時會來,而我們無法重現單一的錯誤。
我很確定,我們從來沒有將Foundation
明確地定義爲未定義的,如果我們是這樣,那麼在每個打火機中都將是一個負載問題。
這使我的問題,如果foundation.js正在評估my_lib.js之前始終評估。從我閱讀帖子到所以我明白,標籤是按順序評估的,並且正在等待對方(我們從不使用異步或延期)。
只有另一條線索是,我能夠從服務器日誌,得到的是發生這些錯誤通常,當用戶正在輸入/閒置一段時間後重裝我們的網站。例如,在或刷新後登錄電子長期閒置後,同時還登錄。
沒有任何人有一個想法,爲什麼是這個hapenning?
非常感謝。
我認爲庫加載 – madalinivascu
之前更好地啓動所有的插件,當所有的渲染完成 – madalinivascu
我會建議你給屬性'defer'到腳本元素插件被啓動。它將在解析HTML的同時下載JS(這可以提高頁面加載速度),並保證按照它們出現在文檔中的順序執行腳本。順便說一句:爲什麼不把'script'放在文檔的末尾,比如foundation或my_lib? – debute