2010-12-22 201 views

回答

1

腳本標記上的onload事件可能會或可能不會運行,具體取決於瀏覽器。

如果您使用的是jQuery,那麼您可以使用$.getScript()函數來加載JavaScript文件併爲其分配回調函數。當JavaScript代碼被加載時,回調被觸發。

如果您沒有使用JavaScript框架,那麼您仍然可以使用上面提到的代碼在DOM中注入腳本標籤。這應該適用於所有瀏覽器,但沒有防彈的方法來確定腳本實際加載的時間。 onload可能會或可能無法正常工作。

從這一點開始,您可以每隔幾秒嘗試一次「輪詢」符號。這意味着您使用window.setInterval()函數在注入腳本標記後每隔幾秒執行一次輪詢函數。在輪詢功能中,您可以使用JavaScript typeof運算符來查看特定變量是否爲undefined(對於上述示例,您將檢查typeof jQuery.fn.hint是否未定義)。一旦定義,取消輪詢功能並執行某些操作

2

您可以使其適用於所有瀏覽器。問題是IE報告狀態不可靠,它並不總是報告完整,有時它只是報告加載。以下代碼適合我。

runFun = ""; 

var newScript = document.createElement('script'); 

if(document.all){ 
    newScript.onreadystatechange = function() { 
     if (newScript.readyState == 'complete') { 
      newScript.onreadystatechange = ""; 
      runFun = new Function("alert('here');"); 
     } 
     else if (newScript.readyState == 'loaded') { 
      newScript.onreadystatechange = ""; 
      runFun = new Function("alert('here');"); 
     } 
     runFun(); 
    } 
} 
else { 
    // most browsers 
    newScript.onload = function() { 
     var runFun = new Function("alert('here');"); 
     runFun(); 
    } 
} 
2

嘗試在src之前放置onload。結果發現,我在這種類型的編程JS功能在IE7 +中的不正常失敗導致了很多問題,這是由於程序員錯誤造成的,哈哈。當我以編程方式將它們交換時,它開始奇蹟般的工作,正如我所期望的那樣,我在標記不調用onload處理程序時遇到了問題。 #ieFAIL!