根据浏览器加载不同版本的jquery

时间:2017-03-02 11:30:47

标签: javascript jquery internet-explorer

我有一个在Jquery 2.x上运行的网站。 IE 9+以及Chrome和Firefox都支持此功能。但我希望该网站能够与IE 8一起使用。

如何卸载Jquery 2.x并仅为IE 8加载1.x?

我尝试过使用以下内容:

<!--[if lt IE 9]>
      <script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>  
<![endif]-->

但在这种情况下,两个版本都会加载。

2 个答案:

答案 0 :(得分:0)

尝试使用条件检查浏览器是否为IE8,就像您一样,并在<html>元素中添加一个类:

<!--[if IE 8]> <html class="ie8"> <![endif]-->
<!--[if gt IE 8]><!--> <html> <!--<![endif]--> 

然后,在您的Javascript代码中,您可以轻松检查<html>元素是否具有为旧浏览器指定的类,并在页面的<head>内动态加载脚本,如下所示:

var head = document.getElementsByTagName('head')[0];  
var script = document.createElement('script');
if(document.getElementsByTagName('html')[0].className == 'ie8')
    script.src = "jquery_1.x.js";
else
    script.src = "jquery_2.x.js";    
script.type = 'text/javascript';   
head.appendChild(script);

请注意,此方法可能会非常慢。

答案 1 :(得分:0)

您可以使用以下特殊条件注释添加所需的jQuery版本:

<!--[if lte IE 8]>
  <script src="/js/jquery-1.12.4.min.js"></script> 
<![endif]-->  
<!--[if (gte IE 9)]><!-->
  <script src="/js/jquery-3.3.1.min.js"></script>
<!--<![endif]-->

请注意第二个<!-->之后的附加if及其特殊结束符<!--<![endif]-->。这将导致像Chrome / FireFox这样的现代浏览器不会将其视为注释,因此会包含新的jQuery版本。