2014-01-13 3 views
5

Я разрабатываю приложение Phonegap, и в настоящее время я использую InAppBrowser для отображения внешних страниц. На некоторых внешних страницах я помещаю кнопку закрытия, и я хочу закрыть сам InAppBrowser. потому что InAppBrowser отображает эти страницы, поэтому ссылка на него не доступна сама по себе, чтобы закрыть ее и, пожалуйста, не предлагайте мне использовать плагин ChildBrowser.Как закрыть сам InAppBrowser в приложении Phonegap?

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-планшета не существует кнопки для ее закрытия.

UPDATE: -

Вот мой полный код: -

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 показать ваш остальной части кода, где и открыл iInAppBrowser –

+0

Почему вы не закрыть его с помощью кнопки Назад панели навигации? –

+0

Когда InAppBrowser отображает страницу, есть некоторые ссылки, поэтому пользователь может перенаправить на другую ссылку, поэтому кнопка «Назад» не подходит для закрытия. – Shashi

ответ

5

Здесь есть сообщение SO, в котором описывается, как это сделать.

Вы в основном должны получить ссылку на браузер inapp, вызывая window.open и подключаться к событию loadstop. В событии 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().

Смежные вопросы