2017-02-04 2 views
3

При запуске на устройстве или эмуляторе iphone 7 успешно запускается inappbrowser, но имена участников событий не вызываются. Код ниже отлично работает на Android. Я работаю над cordova 6.5.0, а плагин inappbrowser - версия 1.6.1. В настоящее время я работаю над mac osx 10.12.2.Кордова InAppBrowser EventListeners, не работающие на ios

function redirect() { 
    if (isloggedin){ 
    navigator.notification.alert("You are already logged in"); 
    } else { 
    var url = "https://connect.stripe.com/oauth/authorize?response_type=code&client_id=CLIENT_ID&scope=read_write"; 
    var target = "_system"; 
    var options = "location=yes, hidden=no, clearcache=yes"; 
    browserRef.addEventListener('loadstart', function(event) { 
     if ((event.url).indexOf("https://example.com") !== -1) { 
     var redirectedURI = event.url; 
     registerUser(redirectedURI); 
     browserRef.close(); 
     } 
    }); 
    } 
} 

Вот изображение уведомления навигаторов с info about browserRef. Я более чем рад предоставить больше информации, такие, как мой config.xml. Любая помощь очень ценится, спасибо.

Редактирование: всякий раз, когда я пытаюсь добавить browserRef.close() в конце моей функции перенаправления, я получаю сообщение об ошибке из xcode "IAB.close(), но он уже закрыт". Я также пробовал window.open() без каких-либо успехов.

Edit 2: Функция перенаправления вызывается нажатием этой кнопки

<a href="#" onClick="redirect();">Online Payments</a> 

ответ

1

Ладно, так что после попытки несколько вещей это то, что работает для меня. Я протестировал все четыре возможных события inappbrowser для разных целей. Единственная цель, для которой эти события могли бы отступить, была «_blank».

browserRef.addEventListener('loadstart', function(event) { navigator.notification.alert(event, event.url); }); 
browserRef.addEventListener('loadstop', function(event) { navigator.notification.alert(event); }); 
browserRef.addEventListener('loaderror', function(event) { navigator.notification.alert(event, event.code, event.message); }); 
browserRef.addEventListener('exit', function(event) { navigator.notification.alert("exit"); }); 

Что-то еще я заметил: по какой-то причине «loadstart» будет работать только на «_self».

Хотя я работал над проблемой, если кто-то может дать некоторое представление о том, почему это происходит, я был бы рад предоставить более подробную информацию о моем коде/сборке.

+0

У меня такая же проблема и я нашел такое же поведение, любое продвижение по этой теме? – Orion390

+0

@ Orion390 Не совсем, извините. Надеюсь, ты это выяснишь. – phil

+0

Закончился переход на другой aproach, вместо того, чтобы использовать inAppBrowser. Я помещаю веб-сайт в iframe внутри кордовы. Таким образом, все работает при показе веб-сайта (но дает много других вещей, чтобы заботиться, например X-Frame-Options вашего сайт), надеюсь, что это поможет кому-то. – Orion390

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