在触发下一个功能之前等待 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 加载?的主要内容,如果未能解决你的问题,请参考以下文章