对于一个网站,我们即将实施自动国家/语言选择,但仍然允许用户选择更改它.
首先,如果用户使用具有国家级TLD的域进入网站,则默认情况下将显示正确的语言.但问题是,如果它们来自通用/国际顶级域名(如.com),逻辑应该是什么.我们是否应该更喜欢使用我们通过其IP地址获取的国家/或者我们应该使用其浏览器区域设置?如果两者都在,按顺序排列?
因此,我在想这个层次结构:
谢谢!
任何人都知道使用JavaScript/jQuery查找客户端上安装的浏览器的类型和版本的好方法吗?
看起来jQuery有一些内置函数,但它在检测Chrome时遇到了问题.这样做还有其他可靠的方法吗?
如何检查是否支持html元素,例如datalist?MDC表示它仅在Opera和FireFox中被推销.
navigator.appName为所有常见浏览器的值返回什么值?
navigator.appNameFirefox 的价值是Netscape.
为IE,Firefox,谷歌Chrome,Safari,Opera,Flock等返回什么值?
我试图检测最终用户是在手机,平板电脑还是个人电脑上
我已经谷歌搜索了一段时间,显然没有简单的解决方案.
好吧,我想我不应该使用Resolution,因为现在有些平板电脑具有惊人的分辨率.
我不应该依赖方向,因为windows8笔记本电脑可以像平板电脑一样旋转.(响应式设计对我目前的项目来说太难了)
我一直在尝试使用UserAgent(认为它也有它的缺点),但是无法让它工作,下面是我用来区分手机/平板电脑和PC的不同版本的联合,他们只是不工作和我不知道为什么
var agents = ['android', 'webos', 'iphone', 'ipad', 'blackberry','iemobile','phone','mobile'];
for(i in agents) {
if(navigator.userAgent.toLowerCase().match('/'+agents[i]+'/i')) {
return true;
}
}
if( /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) ) {
return true;
}
if( navigator.userAgent.match(/Android/i)
|| navigator.userAgent.match(/webOS/i)
|| navigator.userAgent.match(/iPhone/i)
|| navigator.userAgent.match(/iPad/i)
|| navigator.userAgent.match(/iPod/i)
|| navigator.userAgent.match(/BlackBerry/i)
|| navigator.userAgent.match(/Windows Phone/i)
|| navigator.userAgent.match(/bada/i)
|| navigator.userAgent.match(/Bada/i)
){
return true;
}
Run Code Online (Sandbox Code Playgroud) 我点击哈希链接时使用这段JavaScript添加了平滑滚动到我的网站.
$('a[href*=#]')
.click(onAnchorClick);
function onAnchorClick(event)
{
return ! scrollTo(this.hash);
}
function scrollTo(target)
{
var e = $(target);
var y = e.exists() ? e.offset().top : 0;
if(y == 0 && target != '#top')
return false;
if(Math.max($('html').scrollTop(), $('body').scrollTop()) != y)
$('html,body')
.animate({scrollTop: y}, 500, function() { location.hash = target; } );
else
location.hash = target;
return true;
}
$.fn.exists = function()
{
return this.length > 0 ? this : false;
}
Run Code Online (Sandbox Code Playgroud)
在桌面浏览器中运行非常棒,并且至少在iOS设备上也可以正常工作.但是,在我的WinPhone 8设备上它是垃圾.滚动是一团糟,甚至没有结束它应该的地方.所以我决定不通过它启用它if( ! /Windows Phone 8\.0/.test(navigator.userAgent)).
现在它运行良好,并且看起来WinPhone上的浏览器实际上默认是平滑滚动,这很棒.
但是,如果浏览器默认情况下已经执行此操作,则平滑的滚动脚本处于活动状态当然有点愚蠢.有没有办法可以检测浏览器是否已启用平滑滚动功能?
我正在进行一些高级浏览器检测,我从CodePlex 下载了MDBF浏览器文件.
不幸的是,我的Request.Browser.Platform以及其他一些东西在我的iPad Mac OSX(Snow Leopard)和Windows7上都返回"Unknown"
有没有人知道一个好的高级.browser文件,对于非移动设备做同样的事情,就像MDBF对移动设备一样?
这仍然是Chrome 5.0.375.125的最新版本,这是撰写本文时的最新Windows版本.
此处会跟踪错误:http: //code.google.com/p/chromium/issues/detail?id = 25334
所以,问题是,如果您使用的是Windows或Linux,并且有人在也具有border-radius的元素上使用了插入框阴影,则会出现错误 - 边框半径被保留,但插入框 - 阴影溢出来,好像它仍然是一个方盒子.它在Mac OS X上的Chrome中按预期工作.
使用纹理背景的人不能使用这种黑客,因为它需要不透明的边框颜色.它也只适用于较小的半径.
这个黑客的两个部分.一个小Javascript(jQuery + jQuery.client插件):
if ($.client.browser == "Chrome" && $.client.os != "Mac"){
$('html').addClass("inset-radius-hack");
};
Run Code Online (Sandbox Code Playgroud)
和CSS
#div{
-moz-border-radius: 7px;
-webkit-border-radius: 7px;
border-radius: 7px;
-moz-box-shadow: rgba(0, 0, 0, 0.4) 1px 1px 4px 0 inset;
-webkit-box-shadow: rgba(0, 0, 0, 0.4) 1px 1px 4px 0 inset;
box-shadow: rgba(0, 0, 0, 0.4) 1px 1px 4px 0 inset;
padding: 5px 10px;
margin-bottom: 10px;
max-width: 120px;
}
html.inset-radius-hack #div {
border: 2px …Run Code Online (Sandbox Code Playgroud) 我过去几个月一直在为我的公司编写用户脚本,并且刚刚为我的公司设计了主要网站的安装说明(我们的员工遍布世界各地,很少有人听说过用户脚本,更不用说使用它们了,所以这个前端意味着减少我花在支持脚本上的时间).
我想要做的是,在安装页面上,检测他们正在使用哪个浏览器和OS/OS版本,以便我可以突出显示比其余部分稍暗的最相关指令,或者根本不显示不相关的部分.
例如,对于IE6,您必须使用Trixie(我相信)来安装用户脚本,这仅在Win XP上受支持.Win XP支持IE7,Win XP和Win 7支持IE8,Win 7仅支持IE9.对于IE7,8和9我建议使用IEPro.Trixie和IEPro之间的区别在于Trixie需要.user.js的文件扩展名,必须保存在C:/ Program Files/bhelpuri中.另一方面,IEPro要求扩展名为.ieuser并保存到其他位置.对于IE专门,我想检测版本并只显示正确的链接(.user.js或.ieuser,取决于他们应该为他们当前的浏览器使用什么插件),以便它们被带到正确的版本该浏览器的文件,具有该OS/OS版本的正确保存路径.到目前为止,这有什么意义吗?
基本上我的问题是,有没有人知道检测操作系统版本的方法?我目前正在使用http://www.stoimen.com/blog/2009/07/04/jquery-os-detection/,但这不提供操作系统版本,只提供操作系统.我已经尝试循环遍历导航器对象中存储的所有变量但没有成功.任何帮助将不胜感激.
编辑:感谢Nates的回答,我已将确切的代码放在http://jsfiddle.net/Mu8r5/1/上.我希望这可以帮助将来的某个人.
我需要一种快速而肮脏的方法来使用jquery检测媒体查询支持.我定义了一个函数如下:
function mediaQueriesEnabled () {
var v = parseFloat($.browser.version);
if ($.browser.msie) {
if (v < 9)
return (false);
}
return (true);
}
Run Code Online (Sandbox Code Playgroud)
有人可以帮我解决这个问题吗?看这个页面:
http://caniuse.com/css-mediaqueries
我意识到这里有一些复杂性.例如,当我测试我的safari版本时,我得到"534.57.2".我现在想避免安装modernizr,主要是因为我处于紧张状态,我需要在短期内处理大多数情况.任何帮助表示赞赏!
javascript ×5
jquery ×4
browser ×2
asp.net ×1
country ×1
css ×1
css3 ×1
html ×1
localization ×1
navigator ×1