首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在移动浏览器或PhoneGap应用程序之间进行检测

在移动浏览器或PhoneGap应用程序之间进行检测
EN

Stack Overflow用户
提问于 2012-04-27 16:44:25
回答 14查看 38.5K关注 0票数 60

是否可以检测用户是否正在使用JavaScript通过浏览器或应用程序进行访问?

我正在通过一个网页和一个PhoneGap应用程序在几个移动操作系统上开发一个混合应用程序,目标是:

仅当用户代理是 PhoneGap.js 时,应用程序代理才会独立于部署目标应用程序

  • 使用相同的代码添加PhoneGap.js文件
EN

回答 14

Stack Overflow用户

回答已采纳

发布于 2012-09-04 10:04:13

您可以检查当前URL中是否包含http协议。

代码语言:javascript
复制
var app = document.URL.indexOf( 'http://' ) === -1 && document.URL.indexOf( 'https://' ) === -1;
if ( app ) {
    // PhoneGap application
} else {
    // Web page
}
票数 59
EN

Stack Overflow用户

发布于 2012-04-27 17:42:12

我想到的快速解决方案是,

代码语言:javascript
复制
onDeviceReady

会对你有所帮助。由于此JS调用仅由本地桥(objC或Java)调用,因此safari移动浏览器将无法检测到这一点。因此,您的设备应用程序(手机间隙)源代码库将从onDeviceReady启动。

如果Phonegap的任何JS调用,如Device.platform或Device.name是NaN或null,那么它显然是一个移动web调用。

请检查并让我知道结果。

票数 15
EN

Stack Overflow用户

发布于 2012-07-09 00:24:15

我想出了一种方法来做到这一点,而不依赖于deviceready事件,因此,保持web代码库完好无损……

使用内置的deviceready事件的当前问题是,当页面加载时,你无法告诉应用程序:“嘿,这不是在移动设备上运行的,没有必要等待设备准备好启动”。

1.-在代码的本机部分,例如iOS,在MainViewController.m中有一个方法viewDidLoad,我发送了一个javascript变量,稍后我将在web代码中检查该变量,如果该变量存在,我将等待启动页面的代码,直到一切就绪(例如,导航地理位置)。

在MainViewController.m下:

代码语言:javascript
复制
- (void) viewDidLoad
{
    [super viewDidLoad];
    NSString* jsString = [NSString stringWithFormat:@"isAppNative = true;"];
    [self.webView stringByEvaluatingJavaScriptFromString:jsString];
}

2.- index.html代码是这样的:

代码语言:javascript
复制
function onBodyLoad()
{
    document.addEventListener("deviceready", onDeviceReady, false);
}

function onDeviceReady(){;
    myApp.run();
}

try{
    if(isAppNative!=undefined);
}catch(err){
    $(document).ready(function(){
        myApp.run();
    });
}
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10347539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档