添加事件以防止Inappbrowser内部超时

时间:2016-03-23 06:06:52

标签: javascript cordova inappbrowser

我有超时功能

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中处理超时功能的正确方法是什么。

由于

1 个答案:

答案 0 :(得分:0)

在实现事件处理程序时,您的代码似乎是错误的。您的回调传递错误,您也不需要为同一事件注册处理程序两次(尽管您可以但不是必需的)。你的代码应该是:

inappBrowserObj.addEventListener('loadstop', ResetIdleSecondsEvent);

观察我如何通过回调,你的代码将执行该函数而不是将其作为回调传递。

ResetIdleSecondsEvent函数中进行其他函数调用。

我希望这会有所帮助。