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

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

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

Вопрос 1 :
Я бы начал с вопроса : в конфигурации файла.xml предпочтение stay-in-webview теперь устарело для phonegap 2.3.0 правильно? Значит, надеяться не на что?

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

plugin name="InAppBrowser" value="CDVInAppBrowser"

5 ответов


Я бы начал с вопроса : в конфигурации файла.xml предпочтение stay-in-webview теперь устарело для phonegap 2.3.0 правильно? Значит, надеяться не на что?

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

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

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

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

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

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

  4. наконец, Ваш пункт щелчки выглядят следующим образом:

    <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});


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

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

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

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


если внешние ссылки не открываются ЧИТАЙТЕ ДАЛЕЕ.

обновление: 2016-03-20 Я создал учебник по этому вопросу.

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

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

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

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

если вы погуглили что-то вроде внешние ссылки не открываются, тогда вот что вам должен знать. В сентябре и октябре 2015 года Cordova и Phonegap внесли некоторые серьезные изменения. Эти изменения вступили в силу white-listing

White-listing означает, что вы *должны * предоставить системе белый список внешних ссылок, которые вы планируете использовать. Вся система может сбивать с толку. В настоящее время я работаю над сообщением в блоге, но до тех пор вот что вам нужно знать.

на white-list система состоит из трех (3) частей

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

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

вот ссылки, необходимые для начала работы.

здесь больше объяснения:
тайм-Аякс запрашивает Cordova 5

кроме того, вы можете прочитать #10 от лучшие ошибки разработчиков new to Cordova / Phonegap

если вы храбры, вы можете прочитать мой * RAW* Примечания Cordova / Phonegap система белого списка