如何有条件地包含远程JavaScript文件

How to include a remote JavaScript file conditionally?

本文关键字:JavaScript 文件 包含远 有条件      更新时间:2023-09-26

我有一个HTML页面。

在这方面,根据浏览器,我需要包含一个单独的JavaScript文件。

这怎么可能?

<script type="text/javascript">
if(navigator.appName == 'Microsoft Internet Explorer')
{
//here i need to include one.js
}
else
{
//here i need to include two.js
}
</script>

最后,如果您已经在项目中使用JQuery,并且只是省略了它的标记,那么您可以使用$.getScript

这里有一种方法,可能不是最好的。

<script type="text/javascript">
if(navigator.appName == 'Microsoft Internet Explorer')
{
    document.write("<script tag here>");
}
else
{
    document.write("<other script tag here>");
}

<script type="text/javascript">
var src = navigator.appName == "Microsoft Internet Explorer" ? "one.js" : "two.js";
var script = document.createElement("script");
script.setAttribute("src", src);
document.getElementsByTagName("head")[0].appendChild(script);
</script>

当然,你也可以根据自己的喜好拆分上面的三元运算符。。。

使用条件注释只在IE中执行一些HTML。

<!--[if IE]>
 <script src='iescript.js'></script>
<![endif]-->

如果使用jQuery,可以使用getScript((

http://api.jquery.com/jQuery.getScript/

您可以使用上列出的条件注释http://jagregory.com/writings/using-ies-conditional-comments-for-targeted-javascript/

例如,如果你想瞄准IE版本7及以下,你可以:

<!--[if lt IE 7]>
<script type="text/javascript" src="/js/one.js"></script>
<![endif]-->

我建议您使用LAB.js或YepNope(脚本加载程序(。两者都尽最大努力以最佳方式加载外部脚本。

例如,使用YepNope,有两个条件加载:

var agent = navigator.userAgent;
yepnope({
    test : /(msie) (['w.]+)/.test(agent), // internet explorer
    yep  : 'ie.js',
    nope : 'other-script-if-you-want.js'
});
yepnope({
    test : /(mozilla)(?:.*? rv:(['w.]+))?/.test(agent), // firefox
    yep  : 'firefox.js'
});
<script type="text/javascript">
  if(condition===true){
    document.write(unescape(
      '%3Cscript src="file1.js"%3E%3C/script%3E'+
      '%3Cscript src="file2.js"%3E%3C/script%3E'
    ));
  }
</script>

简单易用。每个JS文件1行。