Cordova InAppBrowser: закрыть экземпляр inappbrowser из внедренного скрипта

Я пытаюсь закрыть экземпляр inappbrowser из внедренного в него скрипта.
Вот код, который я пробовал.

    ref = window.open(tile.typeContentUrl_en, '_blank', 'location=no');
    ref.addEventListener('loadstop', function(data, err) {
      ref.executeScript( {
        code: 'document.getElementsByTagName("body")[0].addEventListener("click", function(){ alert("clicked");ref.close() });'
      }, function(){
        console.log('script injected');
      });
    });

Я получил ref, чтобы быть неопределенным в экземпляре inappbrowser.


person vinesh    schedule 31.12.2014    source источник


Ответы (1)


ref определен в веб-просмотре Cordova, но inAppBrowser имеет свой собственный веб-просмотр, а ref там не определен, поэтому вы не можете закрыть inAppBrowser таким образом.

Я не проверял это, это немного хакерски, но может сработать:

    ref = window.open(tile.typeContentUrl_en, '_blank', 'location=no');
    ref.addEventListener('loadstop', function(data, err) {
      ref.executeScript( {
        code: 'document.getElementsByTagName("body")[0].addEventListener("click", function(){ alert("clicked");window.location.href = "close"; });'
      }, function(){
        console.log('script injected');
      });
    });

    ref.addEventListener('loadstart', function(event) {
        if(event.url.indexOf("close") > -1) {
            ref.close();
        }
    });
person jcesarmobile    schedule 31.12.2014
comment
Я проверил это. Но я не знаю, как не вызывается обратный вызов loadstart. Есть идеи? - person vinesh; 01.01.2015
comment
Я только что протестировал его, и он работает, но мне пришлось изменить if при загрузке, потому что window.location.href = close; перенаправляет на текущую страницу /close, а не на пустую страницу с просто закрытой в качестве URL-адреса, поэтому убедитесь, что страница содержит close в URL-адресе - person jcesarmobile; 05.01.2015