Cordova:判断该页面是否在设备应用程序中打开

我正在使用科尔多瓦,并将该网站(远程,不是cordova应用项目中的本地文件)提供给普通浏览器和我手机上的特定应用安装。

现在出现这个问题,如果页面在应用程序内部打开,应该引入cordova脚本,而如果它是在普通浏览器下打开的,则不应该发生。

所以我想知道是否有方法可以判断页面是否在应用程序内部打开?

if (isApp()) {
    document.addEventListener('deviceready', () => {
        bootstrap();
    }
} else {
    bootstrap();
}

在这两种情况下,我都会监视UserAgent ,但似乎没有任何重要的信息。

或者如果我可以在cordova项目中添加一些UserAgent信息?


您可以测试window.cordova以确定您的应用程序是否在Cordova环境中运行(即cordova.js包含在页面中)


/config.xml下行添加到/config.xml

请参阅:http://cordova.apache.org/docs/en/dev/config_ref/index.html#Android%20Configuration

<preference name="AppendUserAgent" value="Cordova" />

然后,我们可以在很早的时候使用下面的条件来判断:

function isApp() {
    return /Cordova/.test(windows.navigator.userAgent);
}

我们可以决定是否引入cordova.js:

let cordovaReady = null;

if (/Cordova/.test(window.navigator.userAgent)) {
  cordovaReady = new Promise((resolve, reject) => {
    const script = document.createElement('script');
    script.type = 'text/javascript';
    script.src = '/cordova/cordova.js';
    script.onload = () => {
      document.addEventListener('deviceready', () => {
        resolve();
      }, false);
    };
    document.body.appendChild(script);
  });
} else {
    cordovaReady = Promise.reject();
}

// We got cordovaReady as a Promise that tells both `inApp()` and `deviceready`.
cordovaReady.then(() => { // done
    // windows.cordova is available
}, () => { // fail
    // windows.cordova is undefined
    console.log('The page is not open under Cordova App.');
}).then(() => { // always
    // launch your app
    bootstrap();
});
链接地址: http://www.djcxy.com/p/79773.html

上一篇: Cordova: judge whether the page is opened in a device app

下一篇: javascript