0
我有我defer
加載從CDN,像這樣一些資源:一勞永逸腳本標記錯誤處理程序已經完成如何運行腳本?
<script src="js/sri-fallback.js"></script>
<script defer
src="https://code.jquery.com/jquery-3.1.0.min.js"
integrity="sha256-cCueBR6CsyA4/9szpPfrX3s49M9vUU5BgtiJj06wt/s="
data-fallback="js/jquery.min.js"
crossorigin="anonymous" onerror="resource_error(this)"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"
defer
data-fallback="js/bootstrap.min.js"
integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa"
crossorigin="anonymous" onerror="resource_error(this)"></script>
<script src="js/do_jquery_stuff.js" defer></script>
sri-fallback.js
是,我試圖用它來自動處理故障從CDN加載時(例如不正確的哈希腳本或者cdn被關閉)。它看起來像這樣:
function resource_error(element) {
var fallback_url = element.dataset.fallback;
var script = document.createElement('script');
script.src = fallback_url;
document.head.appendChild(script);
}
這主要工作,但問題是,資源的順序加載:
- jQuery的通過CDN(失敗)
- 通過CDN引導(失敗)
- do_jquery_stuff.js(成功)局部
- Jquery的(成功)局部
- 自舉(成功)
這意味着do_jquery_stuff.js
失敗,因爲它取決於jquery,它在運行時未加載。
如何運行do_jquery_stuff.js
只有當所有的腳本已加載?