Внешние ссылки в приложении phonegap не открываются хорошо

Итак, у меня есть проект phonegap с Phonegap 2.9.0 и создание с помощью PhonegapBuild.
Я получил внешние ссылки в своем приложении, что я хотел бы открыть inapp или использовать браузер устройств по умолчанию за пределами моего приложения. Я в порядке для обоих решений. Сегодня мое приложение открывает ссылки inapp, но оно работает в полноэкранном режиме, без возможности масштабирования, и нет кнопки для возврата в приложение...
Я пытаюсь найти решение в течение нескольких дней и смотрю на те же вопросы, но ничего не работает.

Может кто-нибудь ясно объяснить, что это такое, и каковы разные варианты /params, потому что я могу сказать, что это совсем не понятно/легко!

Q1:
Я бы начал с вопроса: в файле config.xml предпочтение оставаться в веб-браузере теперь устарело для phonegap 2.3.0? Так что здесь нечего надеяться?

Q2: Я читаю и много прошу о плагине InAppBrowser с window.open и целевой системой /blank/self, но никаких различий для меня. Я остаюсь InApp, но бесполезен, потому что нет кнопок навигации.
Я что-то упустил?

plugin name="InAppBrowser" value="CDVInAppBrowser"

Ответ 1

Я бы начал с вопроса: в файле config.xml предпочтение оставаться в веб-браузере теперь устарело для телефонной книги 2.3.0? Так что здесь нечего надеяться?

Это правильно. Не беспокойтесь об этой настройке, если вы используете 2.9

Я читаю и много разбираюсь в плагине InAppBrowser с window.open и целевой системой /blank/self, но никаких различий для меня. Я остаюсь InApp, но бесполезен, потому что нет кнопок навигации. Я что-то пропустил?

У меня было несколько проблем, чтобы заставить это работать. Их документация немного разбросана и ее необходимо прочитать. Вот как я его работаю:

  • Убедитесь, что у вас есть <script src="phonegap.js"></script> на каждой из ваших страниц, которая хочет использовать inappbrowser
  • Вам не нужно включать тег подключаемого модуля в ваш config.xml. Я почти уверен, что около 2,5 включили inappbrowser в функциональность ядра.
  • Чтобы открыть ссылку в inappbrowser, используйте этот javascript:

    function openURL(urlString){
        myURL = encodeURI(urlString);
        window.open(myURL, '_blank');
    }
    

    Это откроет переданный URL-адрес в inappbrowser. Если вы измените window.open(myURL, '_blank'); на window.open(myURL, '_system');, он откроет переданный URL-адрес в системном браузере.

  • Наконец, ваши клики будут выглядеть так:

    <a href='#' onclick='openURL("http://www.urlyouwant")/>
    

    Или вы могли бы присоединить список событий к объекту, но я думаю, вы поняли смысл.

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

Важно!!!! Не забудьте шаг 1!

Надеюсь, что это поможет.

Ответ 2

Существует два разных способа открыть URL-адрес в Android и iOS.

ДЛЯ IOS используйте следующий код: window.open("http://google.com", '_system');

а для Android используйте следующий код: navigator.app.loadUrl("http://google.com", {openExternal : true});

Ответ 3

Ответ Dom работает для использования PhoneGap 2.9.0

ОДНАКО, как он сказал, очень важно следовать шагу 1. Я использую https://build.phonegap.com для компиляции моего приложения, и я использовал   <script type="text/javascript" charset="utf-8" src="cordova.js"></script>, чтобы заставить это работать вместо шага # 1

Если все остальное не удается, попробуйте этот пример. Это было написано одним из сотрудников телефона:

https://github.com/amirudin/pgb-inAppBrowser

Ответ 4

IF Внешние ссылки не открываются, READ ON.

ОБНОВЛЕНИЕ: 2016-03-20 Я создал учебник по этому вопросу.

Учебник: Phonegap Создайте внешнюю веб-страницу в iframe с помощью белого списка

Если вы читаете это, вы можете заметить, что это сообщение относится к 2.9.0 для Кордовы /Phonegap/Phonegap Build. 2.x официально устарел и больше не поддерживается.

Если вы используете 2.X, и хотите продолжить разработку своего приложения, обновите его.

Если вы компилируете с 3.x, 4.x или 5.x или лучше, читайте дальше.

Если вы googled что-то вроде внешних ссылок, не открывайте, то вот что вам следует знать. В сентябре и октябре 2015 года Кордова и Phonegap внесли некоторые существенные изменения. Эти изменения вступили в силу white-list ing

white-list ing означает, что вы * ДОЛЖНЫ * предоставить системе белый список внешних ссылок, которые вы планируете использовать. Вся система может запутать. В настоящее время я работаю над сообщением в блоге, но до сих пор здесь , что вам нужно знать.

Система white-list имеет три (3) части

  • Белый список представлен в config.xml
  • Плагин белого списка, который вы добавляете в свой config.xml
  • CSP (политика безопасности контента), которая размещается на каждой веб-странице (только один раз, если вы делаете SPA)

Приложение не является прямым. Если вы используете версию 3.x, вам не нужно ничего этого. Если вы используете 4.x или лучше, это относится к вам. Если вы используете 5.x, там еще больше правил. Как я уже сказал, я работаю над сообщением в блоге, но этот список белых списков настолько обременителен, что мне нужно получить слово.

Вот ссылки, которые вам нужно начать.

Здесь больше объяснений:
Тайм-аут AJAX Запросы Cordova 5

Кроме того, вы можете прочитать № 10 Лучшие ошибки разработчиков, новых для Cordova/Phonegap

Если вы храбры, вы можете прочитать заметки * RAW * в Кордова/Телефонная задержка в системе белых списков

Ответ 5

window.open, похоже, не работает из методов обратного вызова. (Может быть, это ограничение браузера?) Возможно, это не проблема OP, но я надеюсь, что это поможет кому-то.