1

如果浏览器是 IE,则尝试让页面加载不同的 js 文件,但如果是任何其他浏览器,则尝试加载不同的 js 文件。我已经破坏了这个,但它不起作用,有人有什么想法吗?

任何帮助表示赞赏:

<script type="text/javascript">
var ie = false;
</script>
<!--[if IE]>
<script type="text/javascript">
ie = true;
</script>
<![endif]-->
<script type="text/javascript">
if(ie == false)
{ 
document.write ("<script src="js/moreskins.js" type="text/javascript">")</script>;
} else {
    document.write ("<script src="js/ieskins.js" type="text/javascript">")</script>;
}
</script>
4

5 回答 5

4

看起来你的最后一个脚本标签有点混乱,而且正如 Teemu 提到的,IE10 不支持条件 HTML 注释。

如果你真的需要以 IE 为目标,我会检查“MSIE”的用户代理:

<script type="text/javascript">
  var ie = !(navigator.userAgent.indexOf("MSIE")<0);
  if(ie == false) { 
    document.write ("<script src=\"js/moreskins.js\"></scr"+"ipt>");
  } else {
    document.write ("<script src=\"js/ieskins.js\"></scr"+"ipt>");
  }
</script>
于 2013-06-15T17:16:13.737 回答
3

这里的问题是结束script标签。使用document.write()添加脚本时,需要将结束标签切成小块。如下所示(也请注意固定的引用和括号)。

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

脚本执行停止,当解析器找到第一个文字结束标记时,这就是您需要在参数中剪切它的原因。

另请注意,IE10 不支持条件注释,您应该使用功能检测而不是浏览器检测。

于 2013-06-15T16:40:27.487 回答
3

使用条件注释在 IE 中加载文件并在其他浏览器中忽略。

<!--[if IE]>
   <script src="js/ieskins.js" type="text/javascript">
<![endif]-->
<![if !IE]>
   <script src="js/moreskins.js" type="text/javascript">
<![endif]>

注意:else 部分 ( <![if !IE]>) 不是注释。因此,对于 IE,它是其他部分,对于其他浏览器,它什么都不是。

编辑

您也可以尝试以下方法而不是document.write

var script = document.createElement('script');
   script.src = "js/moreskins.js";
   document.getElementsByTagName('head')[0].appendChild(script);
于 2013-06-15T16:32:15.133 回答
0

以为我也会尝试编写一些代码;-)

<script>
(function(){
    var script = document.createElement("script"),
        is_ie = (/MSIE/gi.test(navigator.userAgent));
    script.src = (is_ie) ? 'js/ieskins.js' : 'js/moreskins.js';
    document.getElementsByTagName('head')[0].appendChild(script);
}());
</script>
于 2013-06-15T18:14:43.777 回答
-1

使用 navigator.userAgent 更好更简单。您的代码在 IE 之外的任何其他浏览器中都不起作用,因为只有 IE 才能理解<!--[if IE]>

<script type="text/javascript">
    var ie = false;
    if(/MSIE/gi.test(navigator.userAgent)){
       ie = true;
    }
    if(ie == false)
    { 
    document.write ("<script src="js/moreskins.js" type="text/javascript">")</script>;
    } else {
        document.write ("<script src="js/ieskins.js" type="text/javascript">")</script>;

}
</script>
于 2013-06-15T17:11:43.423 回答