加载iframe时,使jQuery脚本运行一次

时间:2015-09-07 09:16:05

标签: javascript jquery html iframe

如果在加载iframe时我如何让我的jQuery脚本运行一次?这是我的代码。

我的代码

$(document).ready(function(){

    //setup a counter to keep our place and cache a selection to the letter wrappers
    var counter = 0,
        $chars  = $(".test").children();

    //setup an interval to animate a letter every so often
    setInterval(function () {

        //select the current letter wrapper and animate it
        $chars.eq(counter).effect( "bounce", {times:1}, 500 );

        //increment the counter so we animate the next letter next time around
        counter++;

        //check if the counter still relates to an index of the $chars collection
        if (counter >= $chars.length) {
            counter = 0;
        }
    }, 250);

});

查看我的fiddle

当我的if playing_song的iframe正在加载时,我需要它运行一次脚本。它可以在任何一点。

我尝试过的事情。

我尝试过使用.ready,但显然它只会在它准备就绪时显示,而不是在它加载时显示。

我想要做的是用动画制作一个div,它超越了静态div。但它无法动态更改,因为iframe可以在任何时候加载。此方法仅在已刷新的父级时才有效。

我之后

我想要的代码是在加载iframe playing_song时运行一次,这可能会在任何时候发生,并且不止一次。

有关如何实现这一目标的任何建议吗?

2 个答案:

答案 0 :(得分:1)

你应该能够用普通的javascript做到这一点。 考虑一下这个html:

<div class="test">
    <span>M</span>
    <span>u</span>
    <span>s</span>
    <span>i</span>
    <span>f</span>
    <span>y</span>
</div>

<iframe id="foo" href="https://youtube.com" width="300" height="250"></iframe>

然后你就可以使用这个javascript做一些事情&#39;#foo&#39;开始加载:

var frame_to_load = document.getElementById("foo");
frame_to_load.onload = function() {
    // your js here
}

或使用jquery:

$('#foo').on('load', function() {
    // your js here
});

如果您有权访问iframe,也可以在iframe中的$(document).load(function(){...});内运行js。

希望这有帮助。

答案 1 :(得分:0)

使用$(document).load访问当前iframe中的加载事件