2010-04-22 52 views
0

我遇到$(document).ready 沒有在IE6中執行的問題,但僅在清除臨時Internet文件(所以實際上是第一次加載這個頁面)。在刷新頁面或稍後頁面加載時,一切正常。

這是當前設置:

  • 與框架門戶頁面,這個門戶頁面也有一個window.load方法(也許我們有一個種族問題與jQuery準備好了嗎?):

    window.onload = function() { 
    try { 
        expireCookie("COOKIE%2DID"); 
        loadMenu(); 
    } catch (pcbException) { 
        reportError(pcbException); 
    } 
    } 
    
    • 在此門戶頁面中,我們的當前頁面被加載。在這個頁面的底部,我們有:

< SCRIPT LANGUAGE = 「JavaScript的」 >

嘗試{

$( 「#CR」)刪除()。

} 趕上(前){}

$(文件)。就緒(函數(){ 警告(ty​​peof運算$); //檢查是否得到執行的方法 RendererPageIsLoading(); //加載組合框中的數據並隱藏div });

< /腳本> < /身體>

我使用的是最新版本的jQuery(1.4.2)的。 編輯:jQuery是越來越加載到當前頁面的頭部分:

<script language="javascript" type="text/javascript" src="https://fulldomain/js/jquery.js"></script> 

以下主題並沒有帶來任何的解決方案: jQuery $(document).ready() failing in IE6

+0

你是如何加載jQuery的?這可能是你錯誤的原因。 – Kobi 2010-04-22 09:07:36

+0

「當前頁面」如何「加載」?你是否正在討論在父頁面中設置「iframe src」? – bobince 2010-04-22 09:09:51

+0

我們使用框架/框架,而不是iframe。使用的代碼(target = frame): if(typeof target.location ==「object」){ target.location.href = url;其它{ target.src = url; \t \t} – Bart 2010-04-22 09:33:36

回答

3

有人建議(他沒有刪除他的回答以後)將一個方法附加到window.onload中會分離$(document).ready()事件中定義的方法。然而,因爲錯誤只發生在第一次加載頁面,我認爲這必須是緩存問題。

經過進一步的調查後,我們發現IE6有一個透明PNG的問題,沒有得到正確加載。因此,瀏覽器正在等待加載圖像,IE6在觸發DOM就緒事件之前等待圖像。

結論:還檢查透明PNG圖像如果有問題的IE6。

0

如果您立即「/體」標記前添加腳本,你不需要使用:

$(document).ready(...); 

由於這份文件準備(從「/體」和「/ HTML酒吧「)。

如果您有一個外部JavaScript文件可能比頁面加載速度更快,在這種情況下,它會延遲執行直到DOM準備就緒(或者在某些瀏覽器中,DOM和HTTP請求...更像是window.onload,例如等待所有圖像)。

+1

如果後面的代碼在文檔中移動,則可能還是'$(document).ready(...);'的一個好主意。這樣,代碼不必修改。 – 2010-04-26 13:20:57

+0

我同意克里斯托弗。 '$(document).ready(...);'還允許將您的所有javascript移動到一個單獨的文件並將其完全從您的HTML中分離出來。我認爲這對於較大的代碼文件非常有用。 – Bart 2010-04-26 13:56:55

+0

我實際上認爲在適當的時候應該使用$(document).ready(...) - 並不是一個規則或「以防萬一」。作爲開發人員意味着考慮您的代碼,而不是編寫不需要的代碼。 @Christopher Parker - 在移動代碼時添加它,也就是在需要時 - 而不是之前。 @Bart - 將腳本移動到單獨的文件時添加它 - 而不是之前。 – Fenton 2010-04-27 06:44:28

相關問題