Добавить событие для предотвращения тайм-аута внутри 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.

Спасибо


person Koo SengSeng    schedule 23.03.2016    source источник
comment
не могли бы вы создать jsfiddle или plunker   -  person brk    schedule 23.03.2016


Ответы (1)


Ваш код кажется неправильным при реализации обработчиков событий. Ваши обратные вызовы передаются неправильно, а также вам не нужно дважды регистрировать обработчики для одного и того же события (хотя вы можете, но не обязательно). Ваш код должен быть:

inappBrowserObj.addEventListener('loadstop', ResetIdleSecondsEvent);

Обратите внимание, как я передал обратный вызов, ваш код выполнит эту функцию вместо того, чтобы передавать ее как обратный вызов.

Выполняйте вызовы других функций внутри функции ResetIdleSecondsEvent.

Надеюсь, это поможет.

person Nikhil Sharma    schedule 13.05.2016