IE条件注释
页面根据是否IE浏览器来决定载入的js及版本:
非ie时=》
<!--[if !IE]> <--> <script src="/assets/js/jquery-3.2.0.min.js" type="text/javascript"></script> <!--> <![endif]-->
ie时(特定版本)=》
<!--[if lt IE 9]> <script src="/assets/js/html5shiv.min.js"></script> <script src="/assets/js/respond.min.js"></script> <script src="/assets/js/jquery-1.9.0.min.js"></script> <![endif]--> <!--[if gte IE 9]> <script src="/assets/js/jquery-2.1.4.min.js" type="text/javascript"></script> <![endif]-->
ie时=》
<!--[if IE]> <script>window.isie = true;</script> <![endif]-->
非ie时=》
<script>window._isie_ = false;</script> <!--[if IE]> <script>window._isie_ = true;</script> <![endif]--> <script> (function () { if (!window._isie_) { var script = document.createElement('script'); script.type = 'text/javascript'; script.onload = script.onreadystatechange = function () { if (!this.readyState || this.readyState === "loaded" || this.readyState === "complete") { // Handle memory leak in IE script.onload = script.onreadystatechange = null; } }; script.src = '/assets/js/jquery-3.2.0.min.js'; window.document.getElementsByTagName('head')[0].appendChild(script); } })(); </script>
js注释:
<script type="text/javascript"> /*@cc_on @if (@_jscript) // 该代码位于一条JS朱室内但在IE中执行它 alert('In IE'); @end @*/ /*@cc_on @if (@_jscript) // 该代码位于一条JS朱室内但在IE中执行它 alert('In IE'); @else*/ alert('is not in IE'); /*@end @*/ </script>
在非IE下 弹出消息框 is not in IE,在IE下则弹出了对话框 In IE。这里用到了能力检测
'@_jscript'
是IE的javascipt解释器,总是为true(脚本中变量都能转换为0或1,true or false,表示存在这个变量,存在这种能力)
建议开发者在开发过程中尽量用能力检测代替浏览器检测。