我有超时功能
var idleTimeOut = 60; // 1 minute
ResetIdleSecondsEvent = function () {
// Reset counter for all listed event
$(document).on("click mousemove keypress touchstart touchend touchcancel touchmove", function () {
_idleSecondsCounter = 0;
})
}
function VerifyTimeOutInterval() {
// Run every seconds to call function and check if current counter is more than
// the preset time
window.setInterval(CheckIdleTime, 1000);
}
function CheckIdleTime() {
// Check timer only predefined timeout value is not 0, null or empty
if (idleTimeOut != "") {
// Increase counter for seconds
_idleSecondsCounter++;
// Check if current counter is more than the preset timeout period
if (_idleSecondsCounter >= idleTimeOut) {
// Notify user that he/she has been automatically logged out
navigator.notification.alert("You have been automatically logged out due " +
"to inactivity. Please login again.", function () { }, "Logged Out", 'OK');
// Navigate to login page
self.navigateLogout();
}
}
}
当用户在1分钟内不执行任何操作时,这在我的应用程序中运行良好,将显示超时消息并将用户带到登录屏幕。
但是当用户使用Inappbrowser打开外部链接并且有活动时,空闲秒数没有被重置,超时消息出现并让用户返回登录。那么如何在Inapp浏览器中添加相同的代码?
据我所知,Inappbrowser只有事件loadstart,loadstop,loaderror和exit。我尝试了以下代码将事件添加到Inappbrowser但没有运气。
var inappBrowserObj = window.open(url, '_blank', 'location=yes');
inappBrowserObj.addEventListener('loadstop', ResetIdleSecondsEvent());
inappBrowserObj.addEventListener('loadstop', VerifyTimeOutInterval());
请告诉我在Inappbrowser中处理超时功能的正确方法是什么。
由于
答案 0 :(得分:0)
在实现事件处理程序时,您的代码似乎是错误的。您的回调传递错误,您也不需要为同一事件注册处理程序两次(尽管您可以但不是必需的)。你的代码应该是:
inappBrowserObj.addEventListener('loadstop', ResetIdleSecondsEvent);
观察我如何通过回调,你的代码将执行该函数而不是将其作为回调传递。
在ResetIdleSecondsEvent
函数中进行其他函数调用。
我希望这会有所帮助。