2014-01-13 67 views
5

我正在開發Phonegap應用程序,目前我正在使用InAppBrowser來顯示外部頁面。在一些外部頁面上放置一個關閉按鈕,我想關閉InAppBrowser本身。因爲InAppBrowser會顯示這些頁面,這就是爲什麼它的引用不會被自己訪問來關閉它,請不要建議我使用ChildBrowser插件。如何在Phonegap應用程序中關閉InAppBrowser本身?

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 

某些Android設備和iOS設備顯示一個「完成」按鈕關閉它。以及iPad也顯示完成按鈕。但在Android平板電腦的情況下,沒有任何類型的按鈕可以關閉它。

更新: -

這裏是我的全碼: -

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

請出示其中u你爲什麼不關閉使用後退按鈕從導航欄打開iInAppBrowser –

+0

代碼的休息嗎? –

+0

當InAppBrowser顯示頁面時,會出現一些鏈接,因此用戶可以重定向到其他鏈接,這就是後退按鈕不適合我關閉的原因。 – Shashi

回答

5

這裏有一篇SO帖子,介紹如何做到這一點。

您基本上必須通過調用window.open並掛載到loadstop事件來獲取對inapp瀏覽器的引用。在loadstop事件中,檢查url是否包含預定義的路徑(如mobile/close - 但可以是任何東西),然後調用close。

這裏是後

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

5

有沒有在這個博客帖子提供瞭解決方案: cross window communication with cordova's inappbrowser

從本質上講,你可以使用executeScript()從父窗口重複執行InAppBrowser實例(例如,每秒一次或兩次),以檢查IAB中的值是否已設置。按IAB中的「關閉」按鈕可以設置這樣一個變量。

當父窗口發現變量已經在IAB中設置時,父窗口使用IAB對它的引用close()它。

相關問題