2017-03-17 53 views
-2

我想在jQuery手機頁面上每10秒後觸發一個事件。但是setInterval()似乎不起作用。即使在頁面加載完成之前,alert()也會顯示。setInterval在jquery移動不工作

這是我的代碼

$(document).on("pageshow", function(event) { 
 
    setInterval(update(), 10000); 
 

 
    function update() { 
 
    alert("Hey"); 
 
    } 
 
});
<meta name="viewport" content="width=device-width, initial-scale=1"> 
 
<!-- Include jQuery Mobile stylesheets --> 
 
<link rel="stylesheet" href="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css"> 
 
<!-- Include the jQuery library --> 
 
<script src="https://code.jquery.com/jquery-1.11.3.min.js"></script> 
 
<!-- Include the jQuery Mobile library --> 
 
<script src="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script> 
 

 
<div data-role="page" id="chat"> 
 
    <div data-role="header"> 
 
    <a href="#panel1" class="ui-btn-left ui-btn ui-btn-inline ui-mini ui-corner-all ui-btn-icon-left ui-icon-gear">Options</a> 
 
    <h1>Streamline Chat</h1> 
 
    <a data-ajax="false" href="logout.php" class="ui-btn ui-btn-inline ui-mini ui-corner-all ui-btn-icon-right ui-icon-power">Log Out</a> 
 
    </div> 
 
</div>

任何幫助嗎?

+0

它已經在工作同樣的代碼[這裏](https://jsfiddle.net/p9h7d793/7/) – rahulsm

回答

2

內檢查您只能回調傳遞給setInterval

https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setInterval

$(document).on("pageshow",function(event){ 
 
    setInterval(update, 1000); 
 
function update() 
 
{ 
 
    console.info("Hey"); 
 
} 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script> 
 
<html> 
 
<head> 
 
<meta charset="utf-8"> 
 
<title>Streamline Chat</title> 
 
<!-- Include meta tag to ensure proper rendering and touch zooming --> 
 
<meta name="viewport" content="width=device-width, initial-scale=1"> 
 
<!-- Include jQuery Mobile stylesheets --> 
 
<link rel="stylesheet" href="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css"> 
 
<!-- Include the jQuery library --> 
 
<script src="https://code.jquery.com/jquery-1.11.3.min.js"></script> 
 
<!-- Include the jQuery Mobile library --> 
 
<script src="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script> 
 
</head> 
 

 
<body> 
 
<div data-role="page" id="chat"> 
 
<div data-role="header"> 
 
<a href="#panel1" class="ui-btn-left ui-btn ui-btn-inline ui-mini ui-corner-all ui-btn-icon-left ui-icon-gear">Options</a> 
 
<h1>Streamline Chat</h1> 
 
<a data-ajax="false" href="logout.php" class="ui-btn ui-btn-inline ui-mini ui-corner-all ui-btn-icon-right ui-icon-power">Log Out</a> 
 
</div> 
 
</div> 
 
</body> 
 
</html>

1

您可以通過update()去除()setInterval

setInterval(update, 10000); 
function update() { 
    alert("Hey"); 
} 
}); 
0

應該updateupdate()setInterval

$(document).on("pageshow",function(event){ 
setInterval(update, 10000); 
function update() 
{ 
    alert("Hey"); 
} 
}); 
0

相信這已經回答了上面的現在,而是將來的參考或其他任何人讀這篇文章,這裏是一個小功能,我寫的,使呼叫超時點點整潔:

功能:

function timeItOut(time, args, params1, params2){ 
    setTimeout(function(){ 
     // add more parameters as per your function with the most params 
     args(params1, params2); 
    }, time) 
} 

用法:

// Occurs after 4 seconds 
timeItOut(4000, animateLights, device); 

// Occurs after 7 seconds 
timeItOut(7000, scrollScreen, 140); 

顯然你可以在timeItOut函數中添加更多'params',這只是我在這個腳本中使用的最大參數數量。

0

嘗試使用​​

「爲什麼我們只需要創建一個setInterval?​​有許多優點。也許最重要的是,它在用戶導航到另一個瀏覽器選項卡,因此沒有浪費自己寶貴的暫停處理能力和電池壽命。

function update() 
{ 
alert("Hey"); 
requestAnimationFrame(update); 
} 

requestAnimationFrame參見

Sample