【问题标题】:Wait for iframe to load before next function is triggered?在触发下一个功能之前等待 iframe 加载?
【发布时间】: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');

【问题讨论】:

    标签: javascript jquery


    【解决方案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 加载事件……我想他知道如何声明一个函数
    猜你喜欢
    • 2022-12-03
    • 1970-01-01
    • 2020-06-18
    • 2020-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-15
    相关资源
    最近更新 更多