是否可以检测用户是否正在使用JavaScript通过浏览器或应用程序进行访问?
我正在通过一个网页和一个PhoneGap应用程序在几个移动操作系统上开发一个混合应用程序,目标是:
仅当用户代理是 PhoneGap.js 时,应用程序代理才会独立于部署目标应用程序
发布于 2012-09-04 10:04:13
您可以检查当前URL中是否包含http
协议。
var app = document.URL.indexOf( 'http://' ) === -1 && document.URL.indexOf( 'https://' ) === -1;
if ( app ) {
// PhoneGap application
} else {
// Web page
}
发布于 2012-04-27 17:42:12
我想到的快速解决方案是,
onDeviceReady
会对你有所帮助。由于此JS调用仅由本地桥(objC或Java)调用,因此safari移动浏览器将无法检测到这一点。因此,您的设备应用程序(手机间隙)源代码库将从onDeviceReady
启动。
如果Phonegap的任何JS调用,如Device.platform或Device.name是NaN或null,那么它显然是一个移动web调用。
请检查并让我知道结果。
发布于 2012-07-09 00:24:15
我想出了一种方法来做到这一点,而不依赖于deviceready事件,因此,保持web代码库完好无损……
使用内置的deviceready事件的当前问题是,当页面加载时,你无法告诉应用程序:“嘿,这不是在移动设备上运行的,没有必要等待设备准备好启动”。
1.-在代码的本机部分,例如iOS,在MainViewController.m中有一个方法viewDidLoad,我发送了一个javascript变量,稍后我将在web代码中检查该变量,如果该变量存在,我将等待启动页面的代码,直到一切就绪(例如,导航地理位置)。
在MainViewController.m下:
- (void) viewDidLoad
{
[super viewDidLoad];
NSString* jsString = [NSString stringWithFormat:@"isAppNative = true;"];
[self.webView stringByEvaluatingJavaScriptFromString:jsString];
}
2.- index.html代码是这样的:
function onBodyLoad()
{
document.addEventListener("deviceready", onDeviceReady, false);
}
function onDeviceReady(){;
myApp.run();
}
try{
if(isAppNative!=undefined);
}catch(err){
$(document).ready(function(){
myApp.run();
});
}
https://stackoverflow.com/questions/10347539
复制相似问题