2

我已經設法在頁面加載時打開一個彈出窗口,但只有在第一次打開該頁面時。一旦打開,我想讓它幾秒鐘後自行關閉,但我無法做到這一點。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> 
+0

也許你應該考慮把setTimeout放在條件之外,就在on('pagesshow'... line – Angel

回答

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); 
}); 

這個代碼可以在每一個頁面事件中使用,不僅是網頁展示。如果您希望只在使用pageinit時執行它。

ClearInterval在這裏防止不斷打開和關閉。如果您有更多問題,請隨時提問。

+0

Thanks。This works。但它會在我從外部頁面導航回索引時再次打開彈出窗口。 –

+0

如果這個外部頁面仍然是你的項目的一部分,並且你沒有阻止使用ajax進行經典頁面加載,那麼你可以簡單地使用pageinit來代替pageshow在任何其他情況下使用sessionStorage。 – Gajotres

0

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

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

這可能是你錯過了官方示例。

+0

看看標籤,他使用的是jQuery mobile。 – jgillich