Wil*_*Wit 33 javascript browser-detection microsoft-edge
我知道你应该尽可能地进行功能检测,但是如果浏览器是Microsoft Edge浏览器,你可以在Javascript中检测到吗?
我维护一个旧产品,我想显示一个警告,可以打破一些功能,而无需花费大量时间来修复旧代码.
san*_*rom 43
尝试检测功能而不是特定的浏览器.它更具有前瞻性.您很少使用浏览器检测.
除此之外:一个选项是使用库(用户代理字符串有许多复杂性),或者window.navigator.userAgent手动解析.
使用解析器库
# https://github.com/faisalman/ua-parser-js.
var parser = new UAParser();
var result = parser.getResult();
var name = result.browser.name;
var version = result.browser.version;
Run Code Online (Sandbox Code Playgroud)
使用Javascript的原始方法
# Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) \
# Chrome/42.0.2311.135 Safari/537.36 Edge/12.10136
window.navigator.userAgent.indexOf("Edge") > -1
Run Code Online (Sandbox Code Playgroud)
Man*_*kar 21
这是检测Edge浏览器的简单脚本
if (/Edge/.test(navigator.userAgent)) {
alert('Hello Microsoft User!');
}
Run Code Online (Sandbox Code Playgroud)
阐释:
/Edge/
Run Code Online (Sandbox Code Playgroud)
一个正则表达式,用于搜索字符串'Edge' - 然后我们根据'navigator.userAgent'属性进行测试
useragent字符串包含Edge/12.9600,其中12.9600是我测试的版本号.这与"边缘"模式下Internet Explorer的用户代理字符串完全不同.
用户代理字符串Edge:
Mozilla/5.0(Windows NT 10.0; Win64; x64)AppleWebKit/537.36(KHTML,与Gecko一样)Chrome/42.0.2311.135 Safari/537.36 Edge/12.9600
边缘模式下IE10的用户代理字符串:
Mozilla/5.0(Windows NT 6.3; WOW64; Trident /7.0; .NET4.0E; .NET4.0C; InfoPath.3; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729;平板电脑PC 2.0; rv:11.0)和Gecko一样
因此,在使用javascript时,只需检查用户代理字符串中的"Edge"一词.当您还测试其他浏览器时,请确保先检查Edge,否则会出现误报(例如Chrome或Safari ...)
小智 5
navigator.appVersion.indexOf('Edge') > -1
Run Code Online (Sandbox Code Playgroud)
我认为这是最好的方法,因为上面的方法有问题或无法正常工作。
if (/Edg/.test(navigator.userAgent)) {
alert("You are using Edge.");
}
Run Code Online (Sandbox Code Playgroud)
if (/Edg/.test(navigator.userAgent)) {
alert("You are using Edge.");
}
Run Code Online (Sandbox Code Playgroud)
(function getBrowser() {
//checks for individual browsers
let chromeCheck =
/Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);
let firefoxCheck = /Firefox/.test(navigator.userAgent);
let ieCheck = /Edg/.test(navigator.userAgent);
//if/else to check browsers against defined variables
if (chromeCheck && !ieCheck) {
isBrowser.textContent = `Yes. It's Chrome!`;
} else if (firefoxCheck) {
isBrowser.textContent = `No. This is Firefox.`;
} else if (ieCheck) {
isBrowser.textContent = `No. It's Edge.`;
} else {
isBrowser.textContent = `We have no clue!`;
}
})();Run Code Online (Sandbox Code Playgroud)
https://msdn.microsoft.com/en-us/library/ms537509%28v=vs.85%29.aspx
尝试一下:
function getInternetExplorerVersion()
// Returns the version of Internet Explorer or a -1
// (indicating the use of another browser).
{
var rv = -1; // Return value assumes failure.
if (navigator.appName == 'Microsoft Internet Explorer')
{
var ua = navigator.userAgent;
var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
if (re.exec(ua) != null)
rv = parseFloat( RegExp.$1 );
}
return rv;
}
function checkVersion()
{
var msg = "You're not using Internet Explorer.";
var ver = getInternetExplorerVersion();
if ( ver > -1 )
{
if ( ver >= 8.0 )
msg = "You're using a recent copy of Internet Explorer."
else
msg = "You should upgrade your copy of Internet Explorer.";
}
alert( msg );
}
Run Code Online (Sandbox Code Playgroud)
将字符串替换Microsoft Internet Explorer为Edge类似的东西。
编辑: 您可以找出用户代理字符串的内容:
alert(navigator.userAgent)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
67262 次 |
| 最近记录: |