当浏览器是IE时运行JQuery函数

时间:2013-07-02 14:41:49

标签: jquery html internet-explorer

我试图根据用户是否正在运行IE来运行JQuery函数。原因是因为我所拥有的功能在IE中不起作用,所以我想在用户使用IE时运行另一个。我正在运行JQuery 1.9.1,因此我无法使用$.browser。我正在尝试使用条件评论,但我不确定这是否可行。我试图在这里实现它,但它不起作用:http://jsfiddle.net/AsQ4E/

这是HTML

<!--[if IE]>
    <input type="button" onclick="javascript:ie();" value="Click Me!" />
<![endif]-->

<!--[if !IE]> -->
    <input type="button" onclick="javascript:notIE();" value="Click Me!" />
<!-- <![endif]-->

这是JQuery

function ie() {
    alert("You are using IE");
}

function notIE() {
    alert("You are not using IE");
}

我怎样才能让它发挥作用?这是最好的方式吗?


编辑:我正在尝试使用SVG Crowbar。当用户单击按钮时,Crowbar从页面中提取SVG并弹出下载。以下是指向它的链接:http://nytimes.github.io/svg-crowbar/。问题是它在IE中不起作用,所以我只会在用户使用IE时使用它:http://bl.ocks.org/biovisualize/1209499(这适用于IE)。我不太了解编程和Javascript来调试IE的问题。

6 个答案:

答案 0 :(得分:1)

使用javascript使用导航器

 navigator.userAgent.indexOf('MSIE')

现在,如果你真的想要IE和版本,你应该从msdn

检查这个脚本

Detecting Windows Internet Explorer More Effectively

答案 1 :(得分:0)

您是否尝试过查看“navigator.userAgent”。你可以用它来判断它的IE是否非常简单。还有其他有用的浏览器检测脚本,但如果您只需要对IE进行简单检查,我就会坚持使用上述内容。

答案 2 :(得分:0)

以下是使用msdn

提出的功能的示例

http://msdn.microsoft.com/en-us/library/ms537509(v=vs.85).aspx

<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="utf-8" />
    <title></title>
    <script type="text/javascript">
        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 myFunction() {
            if (getInternetExplorerVersion() > -1)
                ie();
            else
                notIE();
        }

        function ie() {
            alert("You are using IE");
        }

        function notIE() {
            alert("You are not using IE");
        }
    </script>
</head>
<body>
    <input type="button" onclick="javascript:myFunction();" value="Click Me!" />
</body>
</html>

答案 3 :(得分:0)

您可以使用以下功能检查

(function() {
  "use strict";
  var tmp = (document["documentMode"] || document.attachEvent) && "ev"
       , msie = tmp 
                  && (tmp = window[tmp + "al"])
                  && tmp("/*@cc_on 1;@*/")
                  && +((/msie (\d+)/i.exec(navigator.userAgent) || [])[1] || 0)
  ;
  return msie || void 0;})();

但您可以使用更多选项。看http://www.jquery4u.com/browsers-2/check-ie-version/

答案 4 :(得分:0)

另一种方法是使用条件注释,HTML5 Boilerpalte

<强> HTML

<!DOCTYPE html>
<!--[if lt IE 7]>      <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]>         <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]>         <html class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->

<强> JS

// tweak depending on version of IE
var isIe = $('.lt-ie9').length > 0; // or tagName / document.body etc...

button.on('click', function () {
  if (isIe) {
   console.log('ie');
  }
  else {
   console.log('not ie');
  } 
});

当您将此与modernizr结合使用时,您可以获得UA嗅探的“好处”,并具有完整的功能检测功能。

答案 5 :(得分:0)

JavaScript中的条件注释,无需借助用户代理嗅探:

var ie = (function(){

    var undef,
        v = 3,
        div = document.createElement('div'),
        all = div.getElementsByTagName('i');

    while (
        div.innerHTML = '<!--[if gt IE ' + (++v) + ']><i></i><![endif]-->',
        all[0]
    );

    return v > 4 ? v : undef;

}());

if(ie)
    alert('You are using IE version' + ie);
else
    alert('You are not using IE');