JQM: всплывающее окно не закрывается по таймауту?

Мне удалось заставить всплывающее окно открываться при загрузке страницы, но только при первом открытии этой страницы. Как только он открывается, я хочу, чтобы он закрылся сам по себе через несколько секунд, но я не могу этого сделать.

Это код, который я использую:

<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 ответа

Ваш пример должен работать, но я сделал вам более безопасную версию: 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);
});

Этот код можно использовать в каждом событии страницы, а не только в показе страниц. Если вы хотите, чтобы он выполнялся только один раз, используйте Pageinit.

ClearInterval здесь для предотвращения постоянного открытия и закрытия. Если у вас есть еще вопросы, не стесняйтесь спрашивать.

Вы используете плагин jquery? Я нашел ответ в jquery плагине popupjs:

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

Возможно, вы пропустите официальный образец.

Другие вопросы по тегам