2016-03-23 13 views
0

Ich habe eine Timeout-FunktionEvent hinzufügen Timeout innerhalb Inappbrowser zu verhindern

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(); 
     } 
    }  
}  

Das in meiner Anwendung funktioniert gut, wenn der Benutzer für 1 Minuten nichts tut, wird Timeout-Meldung angezeigt und Benutzer nimmt Bildschirm anmelden.

Wenn der Benutzer jedoch einen externen Link mit Inappbrowser öffnet und aktiv ist, werden die Leerlaufsekunden nicht zurückgesetzt, die Timeout-Meldung wird angezeigt und der Benutzer wird zur Anmeldung zurückgeleitet. Wie füge ich den gleichen Code in den Inapp-Browser ein?

Soweit ich weiß, hat der Inappbrowser nur das Ereignis loadstart, loadstop, loaderror und exit. Ich habe den folgenden Code ausprobiert, um Event in Inappbrowser einzutragen, aber kein Glück.

var inappBrowserObj = window.open(url, '_blank', 'location=yes'); 
inappBrowserObj.addEventListener('loadstop', ResetIdleSecondsEvent()); 
inappBrowserObj.addEventListener('loadstop', VerifyTimeOutInterval()); 

Bitte sagen Sie mir, was ist der richtige Weg, um Timeout-Funktion innerhalb Inappbrowser zu behandeln.

Dank

+0

können Sie bitte eine jsfiddle oder Plunker erstellen – brk

Antwort

0

scheint Ihr Code falsch zu sein, während die Event-Handler zu implementieren. Ihre Callbacks werden nicht korrekt übergeben und Sie müssen die Handler nicht zweimal für dasselbe Ereignis registrieren (obwohl Sie das können, aber nicht benötigen). Der Code sollte sein:

inappBrowserObj.addEventListener('loadstop', ResetIdleSecondsEvent); 

Beobachten Sie, wie ich den Rückruf übergeben haben, wird Ihr Code diese Funktion ausführen, anstatt sie als Rückruf übergeben.

Machen Sie Ihre anderen Funktionsaufrufe innerhalb der ResetIdleSecondsEvent-Funktion.

Ich hoffe, das hilft.

Verwandte Themen