2

如果用户使用 Internet Explorer,我正在尝试动态添加脚本。我尝试了 IE Con​​ditionals,但 chrome 不喜欢该!IE标签,所以我尝试使用 jquery 方式:

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" ></script>
<script type="text/javascript">
    if($.browser.msie){
        document.write('<script type="text/javascript" src="ie/ieFix.js" ></script>');
    }
    else{
        document.write('<script type="text/javascript" src="dynamic.js" ></script>');
    }
</script>

我不知道为什么它不让我添加这个,而是返回'); } else{ document.write(''); }

将它们放入变量中具有相同的效果:/

IE 条件

<!--[if !ie]>-->
    <script type="text/javascript" src="dynamic.js" ></script>
<!--<![endif]-->
<!--[if ie]>-->
    <script type="text/javascript" src="ie/ieFix.js" ></script>
<!--<![endif]-->
4

3 回答 3

4

</script>在行_

document.write('<script type="text/javascript" src="ie/ieFix.js" ></script>');

实际上匹配为的结束标签

<script type="text/javascript">

在它上面的线上。您应该将其重写为类似

document.write('<script type="text/javascript" src="ie/ieFix.js" ></scr' + 'ipt>');

这样您就不会将浏览器与结束</script>标签混淆。

于 2012-05-02T23:02:44.393 回答
1

任何 IE 检查

function detectIEEdge() {
    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 => return version number
       return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);
    }

    // other browser
    return false;
}
于 2013-05-08T13:58:42.433 回答
0

!IE如果你做得对,Chrome 可以正常工作:

<!--[if !ie]>-->
    Put stuff for non-IE browsers here
<!--<![endif]-->

您在上面的代码中遇到问题的原因是 HTML 解析器将</script>视为脚本的结尾而不是字符串的一部分。人们通常使用<\/script>.


更新:你现在做错了“如果 IE”。

<!--[if ie]>
    IE stuff - this is a "conditional reveal"
<![endif]-->
<!--[if !ie]>-->
    Non-IE stuff - this is a "conditional hide"
<!--<![endif]-->
于 2012-05-02T23:02:37.807 回答