Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Modernizer检测internet explorer版本_Javascript_Internet Explorer_Modernizr - Fatal编程技术网

Javascript 使用Modernizer检测internet explorer版本

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"

我对使用Modernizer还不熟悉,但我了解它的基本用途,它可以检测浏览器的功能。在本文中:第一个答案暗示这可以在代码隐藏中完成

 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。