0

10秒後にダイアログをトリガーしたいのですが、これは非常に簡単です..またはそう思いました:-)

function showPopup() {
    $( "#emailPopup" ).dialog({autoOpen:false});
    //alert('Dialog shown');
}
$( "#emailPopup" ).dialog("open");
$( "#emailPopup" ).dialog("close");

$(document).ready(function() {
    $( "#emailPopup" ).dialog({autoOpen:false});

    window.setTimeout(function(){
        showPopup();
    }, 4000);

    jwplayer('videoBox').setup({
        flashplayer: '<?php echo asset_url(); ?>swf/player.swf',
        file: 'http://www.youtube.com/watch?v=Oj8CwmP_Jm4',
        height: 329,
        width: 540,
        events:{
            onBeforePlay:function(){
                $('#videoTitle').hide();
                $('#videoReplay').hide();
            },
            onPlay:function(){
                videoStarted = true;
                clearTimeout(popTO);
            },
            onComplete:function(){
                home.flashGetStarted();
                $('#videoReplay').show();
            }
        },
        plugins: 'fbit-1'
    });
});

コード showPopup IS run を実行すると、Firebugで debug を使用してこれを確認できますが、ダイアログを呼び出した後、まだダイアログが表示されません。setTimeout の外でダイアログを直接呼び出すと、機能しますが、内部ではうまくいきません。

4

2 に答える 2

2

ダイアログでメソッドを使用 openするには、まずダイアログを初期化する必要があります。

$( "#emailPopup" ).dialog({autoOpen:false}); 

function showPopup() {
     $( "#emailPopup" ).dialog("open"); 
     //alert('Dialog shown');
}


window.setTimeout(function(){
    showPopup();
}, 4000);

デモ: http://jsfiddle.net/QtkBL/

于 2013-01-21T21:00:24.777 に答える
0

setTimeout の外でダイアログを直接呼び出すと、機能します...しかし、内部では、それはうまくいきません

それは、スコープが異なるためです。

于 2013-01-21T21:07:19.003 に答える