在触发下一个功能之前等待 iframe 加载?

Posted

技术标签:

【中文标题】在触发下一个功能之前等待 iframe 加载?【英文标题】:Wait for iframe to load before next function is triggered? 【发布时间】:2013-02-12 12:27:27 【问题描述】:

首先:我知道如果可能的话应该异步运行。

我有一个函数,叫做 wrap:

本质上它会将当前页面加载为 iframe。即使点击页面上的链接,我也需要它来保持 javascript 运行。

function wrap()
    event.preventDefault();
    var pathname = window.location.pathname;
    $('body').html('<iframe id="wrapper" src="'+ pathname +'" >')
    $('iframe').load(function ()
           //this is where the magic outght to happen 
    );

运行换行时,我想开始操作 iframe 的内容。对于应用程序的结构,我希望需要从 wrap-function 之外或使用我传递给 wrap 函数的参数来执行此操作。我使用一系列执行动画、播放声音等的功能来做到这一点。(需要时间的东西,也应该按顺序执行)。这就是我理想中的样子。

wrap();
highlight('#one');
highlight('#two');

【问题讨论】:

【参考方案1】:

jQuery 可以在 iframe 上使用 ready 函数,就像在文档中一样。把它放在你的 highlight 函数中,它会在 iframe 加载完成后运行。

$("iframe").ready(function ()
    // do something once the iframe is loaded
);

【讨论】:

其实reday-function在iframes上是不行的,但是load-function也有回调函数,所以你的整体方法就可以了! 等到多个 iframe 加载完毕后怎么样? ready 函数在 iframe 上不起作用。它只是在 DOM 完全加载后执行回调。更具体地说,JQuery 建议使用 $(handler) 语法来代替调用 .ready(handler) 函数。 api.jquery.com/ready【参考方案2】:

你可以创建一个函数:

 function iframeready() 
     // code after iframe is loaded
 

并将此函数作为 iframe 加载事件的回调传递 所以这样你的代码将在 iframe 加载后执行

【讨论】:

与他的问题完全无关。他在问你刚才提到的 iframe 加载事件……我想他知道如何声明一个函数

以上是关于在触发下一个功能之前等待 iframe 加载?的主要内容,如果未能解决你的问题,请参考以下文章

点击时动态加载包含 iframe 的模式?

vue 3在应用程序启动时加载其他功能之前运行功能并等待数据

关闭图库后重新加载 iframe

在灯箱点击之前不要加载 iFrame Google 地图

将 CSS 动态加载到文档头部并在加载后等待

Chrome 扩展将 jquery 注入 iframe