[英]Onload of dynamically included static resources?
我有一個頁面,我正在通過Jquery AJAX將html動態注入html。 該html包含腳本/鏈接標記以包含js / css。 現在,我遇到了一個問題,因為initPage()
函數在包含initPage()
定義的腳本加載之前initPage()
運行。
這是我從AJAX調用中接收到的html的示例:
<script type='text/javascript' src='//domain.com/js/fillip.js'></script>
<script type='text/javascript' src='//domain.com/js/fillip2.js'></script>
<link href='//domain.com/css/fillip.css' rel='stylesheet'>
<iframe src='//domain.com/mypage'></iframe>
<script type='text/javascript'>
$(function(){
initPage();
});
</script>
我需要找出一種方法,在腳本加載后通過回調/承諾運行一些javascript。 有時我只需要加載一個腳本,而其他時候,我需要加載多個腳本。 獎勵點包括可以等待CSS文件。
假設所有腳本均在文檔的“ head”部分中定義,則腳本標簽基本上按照在文檔中定義的順序進行處理。
在文檔末尾(您已經有一個對init的函數調用)。
把那個電話放在下面
$(document).ready(function() {
initPage();
}
另一種方法可以是通過控制順序機制將腳本逐個加載到文檔中,從而加載腳本。
function loadMyJavaScript(jsPath, cb) {
var loaded = false;
// create a script element and add it to the head of the document.
var script = document.createElement('script');
// Define 3 handlers, which will perform the callback
script.onload = successHandler;
script.error = errorHandler;
script.onreadystatechange = stateHandler;
script.src = path;
document.getElementsByTagName("head")[0].appendChild(jsScript);
function successHandler() {
if ( false == loaded ) {
loaded = true;
cb(path, "success");
}
}
function errorHandler() {
if ( false == loaded ) {
loaded = true;
cb(path, "error");
}
}
function stateHandler() {
var status;
if ( false == loaded ) {
status = script.readyState;
if ( status === "complete" ) {
successHandler();
}
}
}
}
您還可以調用此函數並分配回調。
loadMyJavaScript("http path of the script", function(path, status) {
if ( status == "success") {
you can load the next one or
call your initPage();
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.