Я написал пост об этом несколько дней назад. Это лучшее решение, которое вы можете найти (пока PhoneGap не выпустит что-то, может быть, а может и нет), оно короткое, простое и совершенное (я проверил его всеми возможными способами и на разных платформах).
Эта функция будет выполнять работу в 98% случаев.
/**
* Determine whether the file loaded from PhoneGap or not
*/
function isPhoneGap() {
return (window.cordova || window.PhoneGap || window.phonegap)
&& /^file:\/{3}[^\/]/i.test(window.location.href)
&& /ios|iphone|ipod|ipad|android/i.test(navigator.userAgent);
}
if ( isPhoneGap() ) {
alert("Running on PhoneGap!");
} else {
alert("Not running on PhoneGap!");
}
Чтобы завершить другие 2% случаев, выполните следующие действия (это предполагает небольшое изменение в собственном коде):
Создайте файл с именем __ phonegap_index.html с источником:
<!-- __phonegap_index.html -->
<script type="text/javascript">
function isPhoneGap() {
//the function's content is as described above
}
//ensure the 98% that this file is called from PhoneGap.
//in case somebody accessed this file directly from the browser.
if ( isPhoneGap() )
localStorage.setItem("isPhoneGap","1");
//and redirect to the main site file.
window.location = "index.html";
</script>
Теперь на нативном просто измените стартовую страницу с index.html на __ phonegap_index.html на всех ваших платформах PhoneGap. Допустим, имя моего проекта пример , файлы, которые нужно изменить (как для PhoneGap версии 2.2.0):
- iOS -
CordovaLibApp/AppDelegate.m
- Android -
src/org/apache/cordova/example/cordovaExample.java
- Windows 8 -
example/package.appxmanifest
- BlackBerry -
www/config.xml
- WebOS -
framework/appinfo.json
- Бада -
src/WebForm.cpp
(строка 56)
- Window Phone 7 - Понятия не имею, где (кто-то еще разрабатывает на этой платформе?!)
Наконец, вы можете использовать его в любом месте на вашем сайте, если он работает на PhoneGap или нет:
if ( localStorage.getItem("isPhoneGap") ) {
alert("Running on PhoneGap!");
} else {
alert("Not running on PhoneGap!");
}
Надеюсь, это поможет. : -)