有可能“劫持”吗?并延迟文档准备事件处理程序

Is it possible to "hijack" and delay document ready event handlers?

本文关键字:文档 事件处理 程序 延迟 劫持 有可能      更新时间:2023-09-26

我正在嵌入一个iframe,这是一个包含一些Javascript的简单网站。JS有一些$(document).ready处理程序。

问题是,当iframe的加载事件触发时,它们会触发,这发生在我设置src属性&已加载所有资源。但是,在此之前我需要做一些工作-即为主要body标签编译Handlebars模板。

所以,理想情况下我想:

  • 设置src属性
  • 抓取手柄模板
  • 加载资源后,渲染模板并设置body标签的html
  • 从原始iframe的Javascript中执行所有doc.ready处理程序

这可能吗?我需要获得所有处理程序,然后在附加呈现的模板后手动触发iframe主体上的load事件。但我的尝试

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

不工作。任何建议吗?

你可以使用jQuery的$.holdReady(),像这样:

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

我没有尝试过它与iframe,但应该工作。