2014-01-13 3 views
5

Ich entwickle Phonegap Anwendung und derzeit verwende ich InAppBrowser, um externe Seiten anzuzeigen. Auf einigen externen Seiten platziere ich eine Schließen-Schaltfläche und ich möchte den InAppBrowser selbst schließen. Da InAppBrowser diese Seiten anzeigt, wird auf die Referenz davon nicht zugegriffen, um sie zu schließen. Bitte schlagen Sie mir nicht vor, das ChildBrowser-Plugin zu verwenden.Wie InAmBrowser selbst in Phonegap-Anwendung zu schließen?

window.close(); //Not Worked for me 
or 
iabRef.close(); //Also not Worked for me because iabRef is not accessible on InAppBrowser. It is created on Parent Window 

Einige der Android-Geräte und iOS-Geräte zeigen einen Fertig-Button, um sie zu schließen. Sowie das iPad auch die Schaltfläche "Fertig" anzeigen. aber im Fall von Android-Tablet gibt es keine Art von Knopf, um es zu schließen.

UPDATE: -

Hier ist mein voller Code: -

var iabRef = null; 
function iabLoadStart(event) { 
} 
function iabLoadStop(event) { 
} 
function iabClose(event) { 
    iabRef.removeEventListener('loadstart', iabLoadStart);  
    iabRef.removeEventListener('loadstop', iabLoadStop); 
    iabRef.removeEventListener('exit', iabClose); 
} 
function startInAppB() { 
    var myURL=encodeURI('http://www.domain.com/some_path/mypage.html'); 
    iabRef = window.open(myURL,'_blank', 'location=yes');  
    iabRef.addEventListener('loadstart', iabLoadStart); 
    iabRef.addEventListener('loadstop', iabLoadStop); 
    iabRef.addEventListener('exit', iabClose); 
} 
+0

pls Ihren Rest des Codes zeigen, wo u die iInAppBrowser geöffnet –

+0

Warum Sie nicht schließen Sie die Zurück-Taste von der Bar-Navigation mit? –

+0

Wenn InAppBrowser die Seite anzeigt, gibt es einige Links, so dass der Benutzer auf andere Links umleiten kann. Aus diesem Grund ist die Zurück-Schaltfläche nicht zum Schließen geeignet. – Shashi

Antwort

5

Es gibt einen SO-Post hier, der beschreibt, wie dies zu tun ist.

Sie müssen im Grunde einen Verweis auf den inapp-Browser erhalten, indem Sie window.open aufrufen und sich in das loadstop-Ereignis einklinken. Überprüfen Sie im Loadstop-Ereignis, ob die URL einen vordefinierten Pfad enthält (z. B. mobil/schließen - könnte aber alles sein), und rufen Sie dann den Anrufabschluss auf.

ist die Post

https://stackoverflow.com/a/15981972/54805

5

Es gibt eine Lösung in dieser Blog-Post zur Verfügung gestellt: cross window communication with cordova's inappbrowser

Im Grunde könnte man executeScript() aus der Nutzung Übergeordnetes Fenster an die InAppBrowser-Instanz (z. B. einmal oder zweimal pro Sekunde), um zu überprüfen, ob ein Wert im IAB festgelegt wurde. Durch Drücken der Schaltfläche "Schließen" im IAB könnte eine solche Variable gesetzt werden. Wenn das übergeordnete Fenster erkennt, dass die Variable im IAB festgelegt wurde, verwendet das übergeordnete Fenster die IAB-Referenz zu close().