PhoneGap: обнаружение при работе в настольном браузере - PullRequest
116 голосов
/ 09 ноября 2011

Я занимаюсь разработкой веб-приложения, которое использует PhoneGap: сборка для мобильной версии и хочу иметь одну кодовую базу для «настольной» и мобильной версий. Я хочу быть в состоянии определить, будут ли работать вызовы PhoneGap (т. Е. Пользователь на мобильном устройстве, которое будет поддерживать PhoneGap).

Я искал и не могу поверить, что не существует простого способа сделать это. Многие люди предлагали свои предложения;

Ничего из этого не работает, если только вы не удалите файл PhoneGap Javascript из настольной версии приложения, что противоречит моей цели иметь одну кодовую базу.

Пока что единственное решение, которое я придумала, - это анализировать браузер / пользовательский агент, но это, по меньшей мере, не надежно. Любые лучшие решения приветствуются!

РЕДАКТИРОВАТЬ: Немного лучшим решением является попытка вызова функции PhoneGap после небольшого тайм-аута - если он не работает, то предположим, что пользователь находится в настольном веб-браузере.

Ответы [ 31 ]

0 голосов
/ 18 июля 2013

Слегка видоизменен, но у меня отлично работает без проблем.

Целью является загрузка Cordova только на встроенном устройстве, а не на рабочем столе, поэтому я полностью избегаю Cordova в настольном браузере. Тестирование и разработка пользовательского интерфейса и MVVM и так очень удобны.

Поставьте этот код, например. в файле cordovaLoader.js

function isEmbedded() {
    return  
    // maybe you can test for better conditions
    //&& /^file:\/{3}[^\/]/i.test(window.location.href) && 
     /ios|iphone|ipod|ipad|android/i.test(navigator.userAgent);
}

if ( isEmbedded() )
{
   var head= document.getElementsByTagName('head')[0];
   var script= document.createElement('script');
   script.type= 'text/javascript';
   script.src= 'cordova-2.7.0.js';
   head.appendChild(script);
}

Тогда вместо того, чтобы включать сам jordascript cordova, включите cordovaLoader.js

<head>
  <script src="js/cordovaLoader.js"></script>
  <script src="js/jquery.js"></script>
  <script src="js/iscroll.js"></script>
  <script src="js/knockout-2.3.0.js"></script>
</head> 

Облегчи свою работу! :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...