Внешние ссылки в приложении 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 Я создал учебник по этому вопросу.
Если вы читаете это, вы можете заметить, что это сообщение относится к 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, но я надеюсь, что это поможет кому-то.