2014-05-25 33 views
1

我在嵌入一個iframe,這是一個包含一些Javascript的簡單網站。 JS有幾個$(document).ready處理程序。是否有可能「劫持」並延遲文檔就緒事件處理程序?

問題是,他們在iframe的加載事件觸發時觸發,這發生在我設置src屬性&所有資源已被加載後。不過,在此之前我需要做一些工作 - 即爲主body標籤編寫Handlebars模板。

所以,最好我想:

  • 設置src屬性
  • 抓住車把模板
  • 一旦資源加載,呈現模板,並設置body標籤的html
  • 全部執行doc.ready來自原始iframe的Javascript的處理程序

這可能嗎?我需要獲取所有處理程序,然後在附加渲染模板後手動觸發iframe正文上的load事件。但我的嘗試

$('iframe').contents().find('body').trigger('load') 

不工作。有小費嗎?

+1

看起來像jQuery有這個東西[.holdReady()](http://api.jquery.com/jQuery.holdReady/)爲你。 –

回答

2

您可以使用jQuery的$.holdReady(),像這樣:

$.holdReady(true); 

// do stuff 

$.holdReady(false); // execute all pending .ready callbacks 

我還沒有一個iframe試過,但應該工作。

+0

輝煌。你是個學者和紳士。 –

+1

任何想法如何爲非jQuery代碼做到這一點?即直接訂閱窗口加載事件的處理程序? –

+0

如何將'window.onload'保存到另一個變量,清空它,並在準備好時重用該變量? – casraf

相關問題