我正在开发一个使用 PhoneGap:Build 的网络应用程序,并希望为“桌面”和移动版本提供一个代码库。我希望能够检测 PhoneGap 通话是否有效(即用户是否使用支持 PhoneGap 的移动设备)。
我已经搜索过并且无法相信没有简单的方法可以做到这一点。许多人提出了建议;
- http://www.sencha.com/forum/showthread.php?144127-Checking-if-running-in-PhoneGap-or-Mobile-Web-Browser
- http://groups.google.com/group/phonegap/browse_thread/thread/322e80bd41bb1a54/a421300eb2a2029f?lnk=gst&q=detect+desktop#a421300eb2a2029f
- http://groups.google.com/group/phonegap/browse_thread/thread/8a95dfeb0f313792/3ff10d8f35211739?lnk=gst&q=detect+desktop+browser#3ff10d8f35211739
这些都不起作用,除非您从应用程序的桌面版本中删除 PhoneGap Javascript 文件,这违背了我拥有一个代码库的目标。
到目前为止,我想出的唯一解决方案是浏览器/用户代理嗅探,但这至少可以说不够稳健。欢迎任何更好的解决方案!
编辑:稍微好一点的解决方案是在短暂的超时后尝试调用 PhoneGap 函数 - 如果它不起作用,则假设用户使用的是桌面网络浏览器。
最佳答案
我使用这段代码:
if (navigator.userAgent.match(/(iPhone|iPod|iPad|Android|BlackBerry|IEMobile)/)) {
document.addEventListener("deviceready", onDeviceReady, false);
} else {
onDeviceReady(); //this is the browser
}
更新
还有许多其他方法可以检测 phonegap 是否在浏览器上运行,这是另一个不错的选择:
var app = document.URL.indexOf( 'http://' ) === -1 && document.URL.indexOf( 'https://' ) === -1;
if ( app ) {
// PhoneGap application
} else {
// Web page
}
如下所示:Detect between a mobile browser or a PhoneGap application
关于javascript - PhoneGap : Detect if running on desktop browser,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8068052/