2010-09-13 100 views
5

我使用Cufon.replace來替換網站上的一些文字。目前在IE8標準模式下,當它在$(document).ready之外運行時,它只發生在其餘時間DOM變化發生時的50%時間(使用內置於開發工具欄中的IE8進行查看),但沒有文本顯示。jQuery晚於窗口加載

禁用替換,並通過控制檯手動應用它可以正確更新所有文本。 將它包裝在$(document).ready可以防止它發生 - 無需修改DOM(據我可以從開發工具欄中看到)。但是我不能從控制檯手動重新應用 - 所以它可能對我說謊。

結束語在$(window).load似乎有作爲$(document).ready

同樣的效果請注意,這只是影響IE8「標準模式」。它在Firefox和IE7中運行良好。

有什麼想法?

+0

好點,讓我取下我的答案。當我看到美元符號時,我有點困惑,並立即認爲這是主要問題。無論如何,你能否粘貼代碼,以便我可以檢查?現在看起來更像是一個計時問題,你可以做的是每次更改DOM時進行一次檢查/替換(可能需要一個cufonRefresh方法來處理這個問題,你可以調用每個DOM改變) – corroded 2010-09-13 22:05:12

+0

@corroded - Cufon.refresh( )雖然沒有工作,但爲什麼我不確定。 Cufon可能在無效狀態下崩潰(第一次運行時)並且無法在使用刷新時再次嘗試重試? – tgandrews 2010-09-14 08:18:57

+0

恐怕在沒有一些代碼可以參考的情況下回答這個問題會非常困難。你可以發佈一些標記(特別是包括任何JavaScript的標記)和你試圖加載時執行的JavaScript嗎? – ninjascript 2011-08-16 00:40:50

回答

1

我以前經歷過這個......我會將它包裝在匿名函數中,您也可以使用一個簡單的setTimeout來延遲它(可能不需要)。

(function($){ 
    // Your Cufon.replace() 
    Cufon.replace('h1', { fontFamily: 'stack-overflow', hover: true }); 
    Cufon.now(); 

    // OPTIONAL - Delay by 150ms (you can experiment with this value) 
    setTimeout(function(){ Cufon.refresh(); }, 150); 

})(jQuery); 
+0

謝謝。我最後刪除了它。 – tgandrews 2011-08-23 12:20:56