Обнаружьте между мобильным браузером или приложением PhoneGap

Действительно ли возможно обнаружить, если пользователь получает доступ через браузер или приложение с помощью JavaScript?

Я разрабатываю гибридное приложение к нескольким ОС для мобильных устройств через веб-страницу и приложение PhoneGap, и цель была бы к:

  1. Используйте то же кодонезависимо цели развертывания
  2. Добавьте файл PhoneGap.js только, когда агент пользователя будет приложением
61
задан 12 May 2012 в 22:45

1 ответ

Решение: Исправьте index.html в Cordova и добавьте cordova-platform="android" к <html> тег, так, чтобы атрибут cordova-платформы только присутствовал в сборке Cordova и отсутствующий в исходном index.html, используемом для сети за пределами Cordova.

Профессионалы: Не полагаются на агент пользователя, схему URL или cordova API. Не должен ожидать deviceready события. Может быть расширен различными способами, например, cordova-платформа =, "браузер" может быть включен или не для различения веб-приложение за пределами Cordova со сборкой браузерной платформы Cordova.

Слияние с config.xml

    <platform name="android">
        <hook src="scripts/patch-android-index.js" type="after_prepare" />
    </platform>

Добавляют Примечания файла scripts/patch-android-index.js

module.exports = function(ctx) {
    var fs = ctx.requireCordovaModule('fs');
    var path = ctx.requireCordovaModule('path');

    var platformRoot = path.join(ctx.opts.projectRoot, 'platforms/android');
    var indexPath = platformRoot + '/app/src/main/assets/www/index.html';

    var indexSource = fs.readFileSync(indexPath, 'utf-8');

    indexSource = indexSource.replace('<html', '<html cordova-platform="android"');

    fs.writeFileSync(indexPath, indexSource, 'utf-8');
}

: Поскольку кроме андроида, пути platforms/android и /app/src/main/assets/www/index.html должны быть скорректированы.

Приложение может проверить на cordova-платформу с [1 113]

if (! document.documentElement.getAttribute('cordova-platform')) {
  // Not in Cordova
}

или

if (document.documentElement.getAttribute('cordova-platform') === 'android') {
  // Cordova, Android
}
0
ответ дан 31 October 2019 в 15:45

Другие вопросы по тегам:

Похожие вопросы: