我做了一些研究,这个问题已经出现了,但不是我想要的方式.我正在为客户构建一个页面,这是一个QR码登陆,这是一个下载应用程序的地方.因此,他不必在页面上打印出2个QR码,我想检测当前的操作系统(Apple/Android/Other [不支持])并根据该值修改我的元素.
我看过脚本"detectmobilebrowsers",这只是为了告诉用户是否完全是移动的,而我想弄清楚用户运行的操作系统并建议最佳的应用程序版本.
我发现类似于这个问题的其他答案似乎过时或不可靠(没有检测到Android平板电脑浏览器),所以我正在寻找新的东西.我怎样才能做到这一点?(最好使用jQuery - Javascript - PHP的顺序).
我使用以下PHP脚本作为我的网站的索引.
此脚本应包含特定页面,具体取决于浏览器的语言(自动检测).
此脚本不适用于所有浏览器,因此它始终包含index_en.php任何检测到的语言(问题的原因很可能是某些Accept-Language标头未被考虑的问题).
能否请您建议一个更强大的解决方案?
<?php
// Open session var
session_start();
// views: 1 = first visit; >1 = second visit
// Detect language from user agent browser
function lixlpixel_get_env_var($Var)
{
if(empty($GLOBALS[$Var]))
{
$GLOBALS[$Var]=(!empty($GLOBALS['_SERVER'][$Var]))?
$GLOBALS['_SERVER'][$Var] : (!empty($GLOBALS['HTTP_SERVER_VARS'][$Var])) ? $GLOBALS['HTTP_SERVER_VARS'][$Var]:'';
}
}
function lixlpixel_detect_lang()
{
// Detect HTTP_ACCEPT_LANGUAGE & HTTP_USER_AGENT.
lixlpixel_get_env_var('HTTP_ACCEPT_LANGUAGE');
lixlpixel_get_env_var('HTTP_USER_AGENT');
$_AL=strtolower($GLOBALS['HTTP_ACCEPT_LANGUAGE']);
$_UA=strtolower($GLOBALS['HTTP_USER_AGENT']);
// Try to detect Primary language if several languages are accepted.
foreach($GLOBALS['_LANG'] as $K)
{
if(strpos($_AL, $K)===0)
return $K;
}
// Try to detect any language …Run Code Online (Sandbox Code Playgroud) 如何使用JavaScript检测Safari浏览器?我在下面尝试了代码,它不仅可以检测Safari,还可以检测Chrome浏览器.
function IsSafari() {
var is_safari = navigator.userAgent.toLowerCase().indexOf('safari/') > -1;
return is_safari;
}
Run Code Online (Sandbox Code Playgroud) 虽然两者都是基于Webkit的浏览器,但是在URL中的Safari urlencodes引号却没有.
因此我需要在JS中区分这两者.
jQuery的浏览器检测文档将"safari"标记为已弃用.
有没有更好的方法,或者我现在只是坚持使用已弃用的值?
在没有使用jQuery或任何附加库的情况下,在JavaScript中检测浏览器IE和版本低于9的最快,最短(最佳)方法是什么?
我想定位Edge并让flexbox与Firefox 33/Chrome相似,有关详细信息,请参阅此问题.
可以在CSS中定位Edge吗?
我有几个客户昨天抱怨一些代码停止工作.显然,它归结为使用现已弃用的插件,该插件jQuery.browser在jQuery 1.9发布时于昨天停止工作.
我(快)看了一下1.9的变化文档和它看起来像他们想让我来代替一些非常沉重的图书馆只是那一个功能.
是否有推荐最轻的插件或代码片段来恢复该功能?
对于这些网站需要什么,它是非常基本的; 我只需要IE和FF与其他人的最基本的检测.
建议?
我正在写一些javascript,需要在SVG或VML之间进行选择(或两者兼而有之,它是一个奇怪的世界).虽然我知道目前只有IE支持VML,但我更倾向于检测功能而不是平台.
SVG似乎有一些属性,你可以去:例如window.SVGAngle.
这是检查SVG支持的最佳方法吗?
VML有任何等价物吗?
不幸的是 - 在firefox中,我可以非常愉快地在VML中完成所有渲染而不会出现错误 - 屏幕上没有任何反应.从脚本中检测出这种情况非常困难.
我见过的大多数实现都是在客户端进行浏览器检测.我只是想知道在向客户端发送任何资源之前是否可以进行浏览器检测.
谢谢.
嘿大家,我想知道行业中哪些方法是Rails中的浏览器检测标准?是否有某个宝石,库或示例代码可以帮助确定浏览器并将类或ID应用于(X)HTML的body元素?谢谢,我只是想知道每个人使用什么以及是否有可接受的方法来做到这一点?
我知道我们可以获取user.agent并解析该字符串,但我不确定这是否是一种可接受的浏览器检测方式.
另外,我不打算在这里讨论功能检测,我已经在StackOverflow上阅读了多个答案,我要求的就是你们所做的.
[UPDATE]
所以感谢GitHub上的faunzy,我对Rails中的用户代理进行了一些了解,但是仍然不确定这是否是在Rails 3中进行此操作的最佳方式.但这就是我所得到的远:
def users_browser
user_agent = request.env['HTTP_USER_AGENT'].downcase
@users_browser ||= begin
if user_agent.index('msie') && !user_agent.index('opera') && !user_agent.index('webtv')
'ie'+user_agent[user_agent.index('msie')+5].chr
elsif user_agent.index('gecko/')
'gecko'
elsif user_agent.index('opera')
'opera'
elsif user_agent.index('konqueror')
'konqueror'
elsif user_agent.index('ipod')
'ipod'
elsif user_agent.index('ipad')
'ipad'
elsif user_agent.index('iphone')
'iphone'
elsif user_agent.index('chrome/')
'chrome'
elsif user_agent.index('applewebkit/')
'safari'
elsif user_agent.index('googlebot/')
'googlebot'
elsif user_agent.index('msnbot')
'msnbot'
elsif user_agent.index('yahoo! slurp')
'yahoobot'
#Everything thinks it's mozilla, so this goes last
elsif user_agent.index('mozilla/')
'gecko'
else
'unknown'
end
end
return @users_browser
end
Run Code Online (Sandbox Code Playgroud) javascript ×6
jquery ×3
browser ×2
css ×1
node.js ×1
php ×1
ruby ×1
svg ×1
user-agent ×1
vml ×1