Javascript 使用Modernizer检测internet explorer版本
我对使用Modernizer还不熟悉,但我了解它的基本用途,它可以检测浏览器的功能。在本文中:第一个答案暗示这可以在代码隐藏中完成Javascript 使用Modernizer检测internet explorer版本,javascript,internet-explorer,modernizr,Javascript,Internet Explorer,Modernizr,我对使用Modernizer还不熟悉,但我了解它的基本用途,它可以检测浏览器的功能。在本文中:第一个答案暗示这可以在代码隐藏中完成 string s = "Browser Capabilities\n" + "Type = " + browser.Type + "\n" + "Name = " + browser.Browser + "\n" + "Version = " + browser.Version + "\n"
string s = "Browser Capabilities\n"
+ "Type = " + browser.Type + "\n"
+ "Name = " + browser.Browser + "\n"
+ "Version = " + browser.Version + "\n"
+ "Major Version = " + browser.MajorVersion + "\n"
+ "Minor Version = " + browser.MinorVersion + "\n"
+ "Platform = " + browser.Platform + "\n"
+ "Is Beta = " + browser.Beta + "\n"
+ "Is Crawler = " + browser.Crawler + "\n"
+ "Is AOL = " + browser.AOL + "\n"
+ "Is Win16 = " + browser.Win16 + "\n"
+ "Is Win32 = " + browser.Win32 + "\n"
+ "Supports Frames = " + browser.Frames + "\n"
+ "Supports Tables = " + browser.Tables + "\n"
+ "Supports Cookies = " + browser.Cookies + "\n"
+ "Supports VBScript = " + browser.VBScript + "\n"
+ "Supports JavaScript = " +
browser.EcmaScriptVersion.ToString() + "\n"
+ "Supports Java Applets = " + browser.JavaApplets + "\n"
+ "Supports ActiveX Controls = " + browser.ActiveXControls
+ "\n"
+ "Supports JavaScript Version = " +
browser["JavaScriptVersion"] + "\n";
这也可以在Modernizer中实现,或者有类似的功能可以完成预期的任务吗
更新:澄清一下,这样做的目的是能够检测internet explorer的某些版本号,让用户知道他们使用的是不受支持的浏览器版本,这样他们就不会出现故障。由于某些时间限制,我不得不用另一种方法来解决这个问题。我们决定进行Javascript检查,看看问题是从哪里产生的。我正在发布我的成功结果,以防将来有人需要解决类似问题
ar version = detectIE();
if (version === false) {
document.getElementById('result').innerHTML = '<s>IE/Edge</s>';
} else if (version >= 12) {
document.getElementById('result').innerHTML = 'Edge ' + version;
} else {
document.getElementById('result').innerHTML = 'IE ' + version;
if (version == 11) {
('#browserNotSupported').modal('show')
alert('This is still firing')
}
console.log(version)
}
// add details to debug result
//document.getElementById('details').innerHTML = window.navigator.userAgent;
/**
* detect IE
* returns version of IE or false, if browser is not Internet Explorer
*/
function detectIE() {
var ua = window.navigator.userAgent;
var msie = ua.indexOf('MSIE ');
if (msie > 0) {
// IE 10 or older => return version number
return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);
}
var trident = ua.indexOf('Trident/');
if (trident > 0) {
// IE 11 => return version number
var rv = ua.indexOf('rv:');
return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);
}
var edge = ua.indexOf('Edge/');
if (edge > 0) {
// Edge (IE 12+) => return version number
return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);
}
// other browser
return false;
}
ar版本=detectIE();
如果(版本===false){
document.getElementById('result').innerHTML='IE/Edge';
}否则如果(版本>=12){
document.getElementById('result').innerHTML='Edge'+版本;
}否则{
document.getElementById('result').innerHTML='IE'+version;
如果(版本==11){
(“#browserNotSupported”).modal('show')
警报('仍在发射')
}
console.log(版本)
}
//向调试结果添加详细信息
//document.getElementById('details').innerHTML=window.navigator.userAgent;
/**
*检测IE
*如果浏览器不是Internet Explorer,则返回IE版本或false
*/
函数检测(){
var ua=window.navigator.userAgent;
var msie=ua.indexOf('msie');
如果(msie>0){
//IE 10或更早版本=>返回版本号
返回parseInt(ua.substring(msie+5,ua.indexOf('.',msie)),10);
}
变量trident=ua.indexOf('trident/');
如果(三叉戟>0){
//IE 11=>返回版本号
var rv=ua.indexOf('rv:');
返回parseInt(ua.substring(rv+3,ua.indexOf('.',rv)),10);
}
var-edge=ua.indexOf('edge/');
如果(边>0){
//边缘(即12+)=>返回版本号
返回parseInt(ua.substring(边+5,ua.indexOf('.',边)),10);
}
//其他浏览器
返回false;
}
在该地址找到:用户代理嗅探不好,因为IE可以发送请求头中的任何旧UAS,具体取决于请求头、页面元或企业站点模式列表中的x-ua设置。下面是一个客户端习惯用法,它基于特征检测检测IE仿真模式
function getIEVersion(odoc){
if (odoc.body.style.scrollbar3dLightColor!=undefined)
{
if (!!win.WebGLRenderingContext) {return 'IE11';}
else if (odoc.body.style.msGridRows!=undefined) {return 'IE10';}
else if (odoc.body.style.opacity!=undefined) {return 'IE9';}
else if (odoc.body.style.msBlockProgression!=undefined) {return 'IE8';}
else if (odoc.body.style.msInterpolationMode!=undefined) {return 'IE7';}
else if (odoc.body.style.textOverflow!=undefined) {return 'IE6'}
else {return 'IE5.5 or lower';}
}
}
用法:var-EmulationVersion=getIEVersion(文档)
使用dev工具的仿真选项卡更改IE11或更低版本的仿真模式以进行测试。在“仿真”选项卡上,还可以自定义RequestUserAgent字符串以测试任何服务器端浏览器
通用功能测试是if('addEventListener'在窗口中)//这表明客户端浏览器至少使用IE9仿真或是“现代”浏览器。MS官方只支持IE11(可以采用IE较低版本的任何仿真模式)。有关按浏览器版本提供的功能支持的完整列表,请参见caniuse.com。请记住,在IE中,您正在测试浏览器模拟模式下的功能支持(由x-ua header/meta或Enterprise Site Mode列表设置),而不是navigator对象中的版本号,也不是About菜单中的版本号或更新版本KB号。获取特定版本比听起来更难,部分原因是解析用户代理字符串是实现这一点的“官方”方法,而且已经多年了。通常,大多数人只是寻找他们需要的功能,如果这些功能不可用,就会显示一条消息。(此外,用户代理字符串根据“浏览器模式”和其他用户可控制的设置而变化,因此它确实不可靠。)@LanceLeonard感谢您的回复。我找到了一个非Modernizer解决方案,但我不想发布答案,因为它与OP无关。win.WebGLRenderingContext的可能副本应该是window.WebGLRenderingContext。