0

iframe のあるページがあります。この iframe にアニメーションを読み込もうとしています。コンテンツの各部分は、ある種のアニメーションを実行する javascript/jquery スクリプトへの参照を含む html ページです。例えば:

content.html

<head>
<link rel="stylesheet" type="text/css" href="css/slide.css">
<script src="js/library/big_slide_img.js"></script>
</head>
<body>
    <img class="big_slide_img" src="http://25.media.tumblr.com/0ab6f805c5a3591168e2fe2133552054/tumblr_mk52iuvbNI1s631nvo1_1280.jpg">
</body>

big_slide_img.js

$(window).load(function()
{
    $("#iframe").contents().find('.big_slide_img').animate({left: '-=521'}, 800,function(){});
});

ロード方法

loadSlide = function(slide_no)
    {
        $.ajax(
        {
            url: "http://myurl.com",
            async: false,
            jsonpCallback: 'jsonCallback',
            contentType: "application/json",
            type: "GET",
            dataType: "jsonp",
            data: {"action": "loadall"},
            success: function(data)
            {
                $('#frame_title').html(data.title);
                $('#text').html(data.text);
                $('#iframe').contents().find('html').html(data.animation); 
            },
            error: function (event, jqXHR, ajaxSettings, thrownError)
            {
                alert('[event:' + event + '], [jqXHR:' + jqXHR + '], [ajaxSettings:' + ajaxSettings + '], [thrownError:' + thrownError + '])');
            }
        });
    };

私の問題

アニメーションに一貫性がなく、$(window).load が待機していないことが原因であると思われます。遅延により、すべての問題が修正されます。

$(window).load(function()
{
    $("#iframe").contents().find('.big_slide_img').delay(800).animate({left: '521'}, 800,function(){});
});

遅滞なくこれを達成するにはどうすればよいですか?これらのファイルに含まれるコードがわからないので、外部から iframe を監視して、完了時に特定の関数を呼び出す必要は避けたいと思います。私は、何か正しいことを参照していないことを望んでいます/仮定しています。

どうもありがとう。

4

2 に答える 2

1

jQuery をインスタンス化したページが既に読み込まれているため、jQuery は "load" トリガーを呼び出しません。

jquery を iframe 内にロードし、このコードを「big_slide_img.js」に配置できます。 $(function(){ $("#iframe").contents().find('.big_slide_img').delay(800).animate({left: '521'}, 800,function(){}); });

または、iframe の外部でトリガーを作成し、iframe がロードされたときにトリガーを呼び出すこともできます。

他にもたくさんの方法があります。

于 2013-05-02T16:05:34.243 に答える