2014-05-25 99 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

相关问题