15 javascript jquery opera browser-detection
Amazon.com最近更新了他们的javascript,这导致一些Opera浏览器出现问题.
他们的浏览器检测代码看起来像这样,但它有问题:
function sitbReaderIsCompatibleBrowser() {
if (typeof(jQuery) == 'undefined') {
return false;
} else {
var version = jQuery.browser.version || "0";
var splitVersion = version.split('.');
return (
(jQuery.browser.msie && splitVersion[0] >= 6) // IE 6 and higher
|| (jQuery.browser.mozilla && (
(splitVersion[0] == 1 && splitVersion[1] >= 8) // Firefox 2 and higher
|| (splitVersion[0] >= 2)
))
|| (jQuery.browser.safari && splitVersion[0] >= 500) // Safari 5 and higher
|| (jQuery.browser.opera && splitVersion[0] >= 9) // Opera 5 and higher
);
}
}
Run Code Online (Sandbox Code Playgroud)
没有什么明显的错误在我跳出这个代码,但我从来没有使用jQuery的之前,所以我不知道.
即使这段代码看起来像是试图让Opera用户通过,当我使用Opera 9.64访问该页面时,我得到一条"不支持的浏览器"消息.如果我更改Opera的设置以将自己报告为Firefox,则该页面可以完美运行!考虑到这一点,我很确定这是脚本而不是浏览器的问题.
任何jQuery专家都有建议吗?
您可以通过访问亚马逊上的任何书籍并单击"查看此书"链接来复制该行为.
Seb*_*Seb 20
在jQuery 1.3之前,你可以使用jQuery.browser:
if( $.browser.opera ){
alert( "You're using Opera version "+$.browser.version+"!" );
}
Run Code Online (Sandbox Code Playgroud)
从版本1.3开始,您应该使用jQuery.support.
这样做的主要原因是应该避免检查浏览器,因为功能可能会随版本而变化,使您的代码很快就会过时.
您应该始终尝试使用特征检测.这将允许您查看当前浏览器是否支持您尝试使用的功能,无论浏览器品牌,版本等.
jay*_*rjo 10
所有Opera 5+浏览器中都有一个特殊的window.opera对象.所以简单如下:
if (window.opera && window.opera.buildNumber) {
// we are in Opera
}
Run Code Online (Sandbox Code Playgroud)
就足够了.
我检查Opera是这样的:
if (/Opera/.test (navigator.userAgent)) // do something
Run Code Online (Sandbox Code Playgroud)
你为什么想要jQuery?