我有一个脚本,它每10秒检查一次是否刷新页面(如果ajax响应为1(,这个页面也有一个聊天框。如果用户在聊天框中有焦点(和文字(,则自动刷新检查应停止。
有可能这样做吗?
JQUERY
$( document ).ready(function() {
setInterval( CheckUpdate, 10000, 22 );
});
function CheckUpdate(n){
$.post( "test.php", { game: n })
.done(function( data ) {
if (data==1) window.location.href = "https://thispagerefresh.com";
});
}
HTML
<form action=? method=post id=chatform>
<input type="text" name=chat id=chatinput>
<button type="submit" name=chatbtn id=chatbtn>Send</button>
</form>
您可以通过首先将setInterval()
返回值存储在变量中来解决此问题。
// Syntax
var intervalID = setInterval(func, [delay, arg1, arg2, ...]);
返回的intervalID
是一个非零值,用于标识调用setInterval()
创建的计时器。然后,每当用户在聊天框中有焦点(和写作(时,我们只需使用clearInterval()
方法停止使用此存储值的setInterval
。
// Syntax
clearInterval(intervalID)
因此,完整的代码看起来像:
$(document).ready(function() {
var intervalID = setInterval(CheckUpdate, 10000, 22);
// Check if user has the focus (and writing) in the chatbox
$("#chatinput").on("input", function() {
clearInterval(intervalID)
});
});