Cordova InAppBrowser executeScript () не запускает обратный вызов в iOS

1

У меня есть приложение cordova и вы можете использовать InAppBrowser для входа на сайт. В случае успешного входа мне нужно передать ответ в приложение. Я использую executeScript() для достижения, и то же самое отлично работает в Android, тогда как в iOS обратный вызов для executeScript() не запускается.

Слушатель прослушивания My Load stop выглядит следующим образом

var ref = cordova.InAppBrowser.open("XXXX.html", "_blank", 'location=yes,toolbar=yes');


function iabLoadStop(event) {
    alert("EXECUTING SCRIPT")
    ref.executeScript({
        code: "document.body.innerHTML"
    }, function(values) {
        alert("SCRIPT EXECUTED")
        alert(values)
    });
}

Я получаю предупреждение "EXECUTING SCRIPT" успешно при событии остановки загрузки, но executeScript(), который был оповещен предупреждением "SCRIPT EXECUTED", и innerHTML не запускается.

  • 0
    Вы также можете использовать JSONP для вызова iabLoadStop. Эти ссылки помогают вам обрабатывать JSONP-ответы на клиенте и сервере (php) .
  • 0
    Моя проблема не на iabLoadStop вызывается. iabLoadStop был успешно запущен, но CB для executeScript () не запускается.
Показать ещё 5 комментариев
Теги:
cordova

1 ответ

0
Лучший ответ

Как выяснилось, причина была в первом alert. Эта функция останавливает программный поток, а также вызывает остановку кода в XXXX.html, который выполняется executeScript.

Поэтому следует избегать вызова таких функций (alert/confirm и т.д.) Между loadstop и executeScript, по крайней мере, на iOS. Существуют альтернативы, такие как console.log.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню