JQM:弹出窗口没有关闭超时?

时间:2013-04-18 09:38:39

标签: javascript html5 jquery-mobile setinterval jquery-mobile-popup

我设法在页面加载时打开一个弹出窗口,但只是第一次打开该页面。一旦打开,我希望它在几秒钟后自行关闭,但我无法做到。

这是我正在使用的代码:

<script type="text/javascript" language="JavaScript">
    $(document).on('pageshow', function (event) {
if (sessionStorage.popUpShown != 'true') {

    $('#strelica').popup('open', {positionTo: '#hitnizbor'});

    sessionStorage.popUpShown = 'true';
    setTimeout(function () {
        $("#strelica").popup("close");
    }, 3000);
}

else{
    alert('already shown the popup');
}

});
</script>

2 个答案:

答案 0 :(得分:3)

您的示例应该有效,但我为您制作了更安全的版本:http://jsfiddle.net/Gajotres/Uauar/

$(document).on('pageshow', '#index', function(){     
    var start = setTimeout(function () {
        $('#strelica').popup('open', {positionTo: '#hitnizbor'});
        clearInterval(start);
    }, 0);    

    var stop = setTimeout(function () {
        $("#strelica").popup("close");
        clearInterval(stop);        
    }, 3000);
});

此代码可用于每个页面事件,而不仅仅是pageshow。如果您希望仅使用pageinit执行一次。

ClearInterval用于防止持续打开和关闭。如果您有更多问题,请随时提出。

答案 1 :(得分:0)

您正在使用jquery插件吗?我在jquery插件popupjs中找到了答案:

$('a.popup').popup({
   afterOpen : function(){
     var popup = this;
     setTimeout(function(){
        popup.close();
    }, 2000);
}
});

您可能会错过官方样本。