javascript - 为什么不触发不同版本的IE

标签 javascript html css internet-explorer

我有以下脚本来检查我正在运行的 IE 版本并使用样式表并显示警报语句:

var div = document.createElement("div");
        div.innerHTML = "<!--[if lte IE 9]><i></i><![endif]-->";
        var isIeLessThan9 = (div.getElementsByTagName("i").length == 1);
        if (isIeLessThan9) {
            alert("<=9");
            document.write('<link rel="stylesheet" href="theStyles/defaultStyle_ie.css" type="text/css" charset="utf-8" />');
            document.write('<link rel="stylesheet" href="theStyles/captionStyle_ie.css" type="text/css" charset="utf-8" />');
        }
        if (!isIeLessThan9) {
            alert(">9");
            document.write('<link rel="stylesheet" href="theStyles/defaultStyle.css" type="text/css" charset="utf-8" />');
            document.write('<link rel="stylesheet" href="theStyles/captionStyle.css" type="text/css" charset="utf-8" />');
        }

对于 IE 版本 10 和更高版本,它显示 >=10 并且低于 IE 版本 10 的任何内容仍然显示 >=10

我该如何解决?

编辑:

这是应该可以解决问题的更新代码:

<script  type="text/javascript">
    var isMobile = {
        Android: function () {
            return navigator.userAgent.match(/Android/i);
        },
        BlackBerry: function () {
            return navigator.userAgent.match(/BlackBerry/i);
        },
        iOS: function () {
            return navigator.userAgent.match(/iPhone|iPad|iPod/i);
        },
        Opera: function () {
            return navigator.userAgent.match(/Opera Mini/i);
        },
        Windows: function () {
            return navigator.userAgent.match(/IEMobile/i);
        },
        any: function () {
            return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Opera() || isMobile.Windows());
        }
    };



    navigator.sayswho= (function(){
    var ua= navigator.userAgent, tem, 
    M= ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*([\d\.]+)/i) || [];
    if(/trident/i.test(M[1])){
        tem=  /\brv[ :]+(\d+(\.\d+)?)/g.exec(ua) || [];
        return 'IE '+(tem[1] || '');
    }
    M= M[2]? [M[1], M[2]]:[navigator.appName, navigator.appVersion, '-?'];
    if((tem= ua.match(/version\/([\.\d]+)/i))!= null) M[2]= tem[1];
    return M.join(' ');
})();
var browserversion1 = navigator.sayswho.split(" ");
var browserversion2 = browserversion1[1].split(".")[0].split(",");
var isIeLessThan10 = browserversion1[0] == "IE" && browserversion2[0] < 10;




    if (!isMobile.any()) {
        if (isIeLessThan10) {
            alert("IE<10");
            document.write('<link rel="stylesheet" href="theStyles/defaultStyle_ie.css" type="text/css" charset="utf-8" />');
            document.write('<link rel="stylesheet" href="theStyles/captionStyle_ie.css" type="text/css" charset="utf-8" />');
        }
        else {
            alert("IE>=10 || !IE");
            document.write('<link rel="stylesheet" href="theStyles/defaultStyle.css" type="text/css" charset="utf-8" />');
            document.write('<link rel="stylesheet" href="theStyles/captionStyle.css" type="text/css" charset="utf-8" />');
        }
    }
    else {
        alert("mobile");
        document.write('<link rel="stylesheet" href="theStyles/defaultStyle_mobile.css" type="text/css" charset="utf-8" />');
        document.write('<link rel="stylesheet" href="theStyles/captionStyle_mobile.css" type="text/css" charset="utf-8" />');
    }
</script>

IE8 和 FF 都显示警告,IE>=10 || !IE

最佳答案

我宁愿使用这个函数来获取浏览器及其版本,而不是依赖 html 标签计数,这可以很容易地随着您的内容而改变:JSFiddle

 navigator.sayswho= (function(){
    var ua= navigator.userAgent, tem, 
    M= ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*([\d\.]+)/i) || [];
    if(/trident/i.test(M[1])){
        tem=  /\brv[ :]+(\d+(\.\d+)?)/g.exec(ua) || [];
        return 'IE '+(tem[1] || '');
    }
    M= M[2]? [M[1], M[2]]:[navigator.appName, navigator.appVersion, '-?'];
    if((tem= ua.match(/version\/([\.\d]+)/i))!= null) M[2]= tem[1];
    return M.join(' ');
})();
var browserversion1 = navigator.sayswho.split(" ");
var browserversion2 = browserversion1[1].split(".")[0].split(",");
var isIeLessThan10 = (browserversion1[0] == "IE" || browserversion1[0] == "MSIE") && browserversion2[0] < 10;

关于javascript - 为什么不触发不同版本的IE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21991142/

相关文章:

css - 使用 CSS 实现页面加载的淡入效果

javascript - 如何在javascript中获取数组中的json值

html - 当页面太短时,div 中的背景图像在顶部和底部被截断

javascript - 我可以使用传递给 Rust 的 JavaScript 对象来实现需要垃圾回收的结构吗?

javascript - 有没有办法设置下拉菜单的高度以一次仅显示 10 个值?

html - CSS - 无法使 CSS 类正常工作,但内联样式确实有效

javascript - Google Grid Gallery Safari 模态滚动

javascript - 使用 jquery 根据文本框的值隐藏或过滤 div

php - 通过表单向php发送json

javascript - jquery-ui : Dialog not opened at vertical center