Vir*_*hah 28 javascript browser cross-browser
是否有任何对象/方法可以提供有关浏览器,客户端的信息?
例如,我需要检测IE浏览器.我在用:
function st_IsIE()
{
if(navigator.appName.indexOf("Microsoft Internet Explorer") != -1)
{
return true;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?
ped*_*ram 22
JavaScript方面 - 你可以像这些方式获得浏览器名称......
if(window.navigator.appName == "") OR if(window.navigator.userAgent == "")
Run Code Online (Sandbox Code Playgroud)
Ani*_*rni 18
这是纯JavaScript解决方案.这是我的要求.
我试过不同的浏览器.它工作正常.希望能帮助到你.
您可以使用navigator.appName
和navigator.userAgent
属性.该userAgent
属性更可靠,appName
因为,例如,Firefox(和一些其他浏览器)可能返回字符串"Netscape"作为navigator.appName
与Netscape Navigator兼容的值.
但请注意,这navigator.userAgent
也可能是欺骗性的 - 也就是说,客户端几乎可以替换任何字符串userAgent
.因此,无论我们从任何一个推论出来,appName
还是userAgent
应该用一粒盐.
var nVer = navigator.appVersion;
var nAgt = navigator.userAgent;
var browserName = navigator.appName;
var fullVersion = ''+parseFloat(navigator.appVersion);
var majorVersion = parseInt(navigator.appVersion,10);
var nameOffset,verOffset,ix;
// In Opera, the true version is after "Opera" or after "Version"
if ((verOffset=nAgt.indexOf("Opera"))!=-1) {
browserName = "Opera";
fullVersion = nAgt.substring(verOffset+6);
if ((verOffset=nAgt.indexOf("Version"))!=-1)
fullVersion = nAgt.substring(verOffset+8);
}
// In MSIE, the true version is after "MSIE" in userAgent
else if ((verOffset=nAgt.indexOf("MSIE"))!=-1) {
browserName = "Microsoft Internet Explorer";
fullVersion = nAgt.substring(verOffset+5);
}
// In Chrome, the true version is after "Chrome"
else if ((verOffset=nAgt.indexOf("Chrome"))!=-1) {
browserName = "Chrome";
fullVersion = nAgt.substring(verOffset+7);
}
// In Safari, the true version is after "Safari" or after "Version"
else if ((verOffset=nAgt.indexOf("Safari"))!=-1) {
browserName = "Safari";
fullVersion = nAgt.substring(verOffset+7);
if ((verOffset=nAgt.indexOf("Version"))!=-1)
fullVersion = nAgt.substring(verOffset+8);
}
// In Firefox, the true version is after "Firefox"
else if ((verOffset=nAgt.indexOf("Firefox"))!=-1) {
browserName = "Firefox";
fullVersion = nAgt.substring(verOffset+8);
}
// In most other browsers, "name/version" is at the end of userAgent
else if ( (nameOffset=nAgt.lastIndexOf(' ')+1) < (verOffset=nAgt.lastIndexOf('/')) ) {
browserName = nAgt.substring(nameOffset,verOffset);
fullVersion = nAgt.substring(verOffset+1);
if (browserName.toLowerCase()==browserName.toUpperCase()) {
browserName = navigator.appName;
}
}
// trim the fullVersion string at semicolon/space if present
if ((ix=fullVersion.indexOf(";"))!=-1)
fullVersion=fullVersion.substring(0,ix);
if ((ix=fullVersion.indexOf(" "))!=-1)
fullVersion=fullVersion.substring(0,ix);
majorVersion = parseInt(''+fullVersion,10);
if (isNaN(majorVersion)) {
fullVersion = ''+parseFloat(navigator.appVersion);
majorVersion = parseInt(navigator.appVersion,10);
}
document.write(''
+'Browser name = '+browserName+'<br>'
+'Full version = '+fullVersion+'<br>'
+'Major version = '+majorVersion+'<br>'
+'navigator.appName = '+navigator.appName+'<br>'
+'navigator.userAgent = '+navigator.userAgent+'<br>');
Run Code Online (Sandbox Code Playgroud)
在c#中,您的浏览器名称使用:
System.Web.HttpBrowserCapabilities browser = Request.Browser;
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅链接
http://msdn.microsoft.com/en-us/library/3yekbd5b%28v=vs.100%29.aspx
在客户方:
JQuery的:
jQuery.browser
Run Code Online (Sandbox Code Playgroud)
有关详情,请参阅链接:
http://api.jquery.com/jQuery.browser/
我在这里找到了一个纯粹的 Javascript 解决方案,它似乎适用于 PC 和 Mac 的主要浏览器。我在 BrowserStack 中针对这两个平台对其进行了测试,它的工作原理就像做梦一样。Jason D'Souza 在此线程中发布的 Javascript 解决方案非常好,因为它为您提供了许多有关浏览器的信息,但它在识别 Edge 时遇到了问题,该 Edge 看起来像 Chrome。他的代码可能会使用此解决方案进行一些修改,使其也适用于 Edge。这是我找到的代码片段:
var browser = (function (agent) {
switch (true) {
case agent.indexOf("edge") > -1: return "edge";
case agent.indexOf("edg") > -1: return "chromium based edge (dev or canary)";
case agent.indexOf("opr") > -1 && !!window.opr: return "opera";
case agent.indexOf("chrome") > -1 && !!window.chrome: return "chrome";
case agent.indexOf("trident") > -1: return "ie";
case agent.indexOf("firefox") > -1: return "firefox";
case agent.indexOf("safari") > -1: return "safari";
default: return "other";
}
})(window.navigator.userAgent.toLowerCase());
console.log(window.navigator.userAgent.toLowerCase() + "\n" + browser);
Run Code Online (Sandbox Code Playgroud)
我喜欢Sintrias 的答案,但我想用稍微更现代的语法进行更新。
const userAgent = window.navigator.userAgent.toLowerCase();
const browser =
userAgent.indexOf('edge') > -1 ? 'edge'
: userAgent.indexOf('edg') > -1 ? 'chromium based edge'
: userAgent.indexOf('opr') > -1 && !!window.opr ? 'opera'
: userAgent.indexOf('chrome') > -1 && !!window.chrome ? 'chrome'
: userAgent.indexOf('trident') > -1 ? 'ie'
: userAgent.indexOf('firefox') > -1 ? 'firefox'
: userAgent.indexOf('safari') > -1 ? 'safari'
: 'other';
console.log(`${userAgent.toLowerCase()}\n${browser}`);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
96932 次 |
最近记录: |