if(firefox and is on a computer){
alert('using firefox on a computer')
}else{
alert("using something else!");
}
我该如何做到这一点?
if(firefox and is on a computer){
alert('using firefox on a computer')
}else{
alert("using something else!");
}
我该如何做到这一点?
你需要的是浏览器检测:
if ($.browser.mozilla) { ...
然而,浏览器嗅探并不被推荐使用,因为很容易欺骗用户代理,也就是假装成另一个浏览器!你最好使用特性检测,可以自己实现,也可以通过jQuery.support接口:http://api.jquery.com/jQuery.support/。这里有一篇关于扩展它以供自己使用的文章:http://www.waytoocrowded.com/2009/03/14/jquery-supportminheight/。
编辑:发现了这篇帖子,对解决问题有所帮助:When IE8 is not IE8 what is $.browser.version?。我正在做类似以下的事情;
function checkBrowser(){
let browser = "";
let c = navigator.userAgent.search("Chrome");
let f = navigator.userAgent.search("Firefox");
let m8 = navigator.userAgent.search("MSIE 8.0");
let m9 = navigator.userAgent.search("MSIE 9.0");
if (c > -1) {
browser = "Chrome";
} else if (f > -1) {
browser = "Firefox";
} else if (m9 > -1) {
browser ="MSIE 9.0";
} else if (m8 > -1) {
browser ="MSIE 8.0";
}
return browser;
}
let
来避免全局变量,自 JavaScript 诞生以来就可以使用 var
。 - 1j01像这样:检查Firefox浏览器。或者其他一些浏览器。
window.onload = function() {
// alert(navigator.userAgent);
if (navigator.userAgent.indexOf("Firefox") > 0) {
alert("ff");
}
}
if (navigator.userAgent.indexOf("Firefox") != -1) {
//some specific code for Mozilla
}
navigator.sayswho= (function(){
var N= navigator.appName, ua= navigator.userAgent, tem;
var M= ua.match(/(opera|chrome|safari|firefox|msie)\/?\s*(\.?\d+(\.\d+)*)/i);
if(M && (tem= ua.match(/version\/([\.\d]+)/i))!= null) M[2]= tem[1];
M= M? [M[1], M[2]]: [N, navigator.appVersion,'-?'];
return M.join(' ');
})();
正如名称所示,这是浏览器所说的它是谁 - 但在要求它实际执行任何操作之前,请使用对象检测...
我用它来记录用户错误并在多个浏览器中测试代码- 在那里我知道userAgent字符串。
更好的做法是检测所需的特性,而不是检测浏览器。例如,如果您需要知道是否支持foo()函数,可以使用if(foo){}进行检查。
如果你需要快速且简单的解决方案,请按照以下步骤操作。当你在NavigatorID.userAgent
属性中搜索“Firefox”关键字时,使用includes()函数比indexOf()函数更加清晰。
const isFirefoxBrowser = navigator.userAgent.includes('Firefox');
警告:
基于检测用户代理字符串的浏览器识别方法不可靠,不建议使用,因为用户代理字符串是可以由用户自行配置的。
推荐解决方案:
使用功能检测来替代浏览器检测。
功能检测是指确定浏览器是否支持某段代码,并根据其支持情况运行不同的代码,以使得浏览器能够始终提供正常工作的体验而不会在某些浏览器上崩溃或出错。
正如在评论中已经问过的那样:你为什么要这样做?浏览器嗅探是一个坏习惯,只有少数情况下需要使用。
相反,使用功能检测。就像Nicholas Zakas所描述的那样,您应该在使用相对“不常见”的功能之前进行测试,并仅依赖于这些测试,以便您具备一定的失效保护机制。例如,可执行以下操作:
if (window.XMLHttpRequest)
var xhr = new XMLHttpRequest();
替代
if ((brwsr.IE && brwsr.IE.version >= 7) || (brwsr.firefox) || (brwsr.opera))
var xhr = new XMLHttpRequest();
还有不要这样做
if (window.XMLHttpRequest)
// Hey, native XMLHttpRequest-support, so position: fixed is also supported
(而是测试是否支持position: fixed
)
存在一些名为Kazehakase和Midori的不常见浏览器,它们可能支持这些功能,也可能不支持,因此在使用特性检测时,您的脚本将在这些浏览器上静默工作。
但请阅读提到的文章,因为它包含了这种技术的非常好的和全面的解释。(顺便说一句,我认为Zakas的Web开发者专业JavaScript仍然太不知名了。)
http://api.jquery.com/jQuery.browser/
if ($.browser.mozilla) { ...
你可以使用JavaScript的navigator.userAgent
或一般的navigator
对象来控制,
但如果你想使用现成的东西,可以检查这个:
希望这能帮到你,Sinan。