Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果浏览器是Internet Explorer:请运行替代脚本_Javascript_Browser Detection - Fatal编程技术网

Javascript 如果浏览器是Internet Explorer:请运行替代脚本

Javascript 如果浏览器是Internet Explorer:请运行替代脚本,javascript,browser-detection,Javascript,Browser Detection,我使用的是一个图像旋转木马脚本,它在浏览器上非常繁重。它在Opera和Chrome中工作得很好,在FF中工作得很好,在IE中完全打破了我的习惯。所以我想给IE用户一个简单HTML的替代品,而不需要任何动作/JS 该脚本不使用MT或jQuery及其类似的380行JS。有可能给IE用户一个简单的HTML替代方案吗 var browserName=navigator.appName; 如果(浏览器名==“Microsoft Internet Explorer”) { //我可以使用什么命令? }这篇文

我使用的是一个图像旋转木马脚本,它在浏览器上非常繁重。它在Opera和Chrome中工作得很好,在FF中工作得很好,在IE中完全打破了我的习惯。所以我想给IE用户一个简单HTML的替代品,而不需要任何动作/JS

该脚本不使用MT或jQuery及其类似的380行JS。有可能给IE用户一个简单的HTML替代方案吗

var browserName=navigator.appName;
如果(浏览器名==“Microsoft Internet Explorer”)
{
//我可以使用什么命令?

}

这篇文章很有解释性:

如果您的JS不引人注目,您可以使用:

<![if !IE]>
   <script src...
<![endif]>


您可以这样做以包含特定于IE的javascript:

<!--[IF IE]>
    <script type="text/javascript">
        // IE stuff
    </script>
<![endif]-->

定义一个默认值为true的布尔值,然后在内部将该值设置为false,并使用该值确定高级代码是否应运行。比如:

<script type="text/javascript">var runFancy = true;</script>
<!--[if IE]>
<script type="text/javascript">
    runFancy = false;
    //any other IE specific stuff here
</script>
<![endif]-->
<script type="text/javascript">
    if (runFancy) {
         //do your code that works with sane browsers
    }
</script>
var runFancy=true;
如果(花式){
//您的代码是否与sane浏览器兼容
}

这是我使用的脚本,它就像一个符咒。我使用了Ender建议的布尔方法,因为其他方法只使用特定于IE的脚本,在IE中添加了一些内容,但没有删除原始代码

    <script>runFancy = true;</script>
<!--[if IE]>
<script type="text/javascript">
    runFancy = false;
 </script> // <div>The HTML version for IE went here</div>
<![endif]-->

    // Below is the script used for all other browsers:
    <script src="accmenu/acac1.js" charset="utf-8" type="text/javascript"></script><script>ac1init_doc('',0)</script> 
runFancy=true;
//以下是用于所有其他浏览器的脚本:
AC1单位文件(“”,0)

此代码在我的网站上运行良好,因为它可以检测其ie是否存在,并激活javascript(如果它位于下方),您可以在ie或其他浏览器上实时查看它


注意,您还可以在纯js中确定脚本通过哪个浏览器执行:window.navigator.userAgent

但是,这不是推荐的方法,因为它可以在浏览器设置中配置。有关更多信息,请访问:

var browserName=navigator.appName;如果(浏览器名==“Microsoft Internet Explorer”){ document.write(“IE的html”) }


对于IE10+标准条件不起作用的原因是发动机更换或其他一些原因,因为,你们知道,这是MSIE。但对于IE10+而言,您需要在脚本中运行类似的内容:

if(navigator.userAgent.match(/Trident\/7\./){
//为IE做事。
}

在Microsoft的开发者档案中查看此脚本:

我在很多项目中使用过这个脚本,从来没有遇到过任何问题。

试试这个: 所有浏览器中都未定义systemLanguage和userLanguage

if(navigator.userLanguage !== "undefined" && navigator.systemLanguage !== "undefined" && navigator.userAgent.match(/trident/i)) {
    alert("hello explorer i catch U :D")
  }

我发现自从IE10以来,使用
条件注释已被弃用。看@AdrienBe他们是不是想干掉Internet Explorer?为什么要删除允许我们容纳其缺陷的功能?是的,自从Edge发布以来,他们一直在试图杀死IE。你忘记了“!”,我想:注意这只适用于IE9及以下版本。由于IE在2020年的唯一版本是IE 11,所以这种方法不再可行。你是对的-请参阅:。希望没有人还在专门为IE开发:)请注意,下面的所有(或几乎所有)答案都提到了有条件的评论。自IE10以来,条件注释已被弃用。看到其他人来这里问问题寻求答案,有时是在问题最初被问到很多年之后@AdrienBe礼貌地让其他人知道带条件评论的答案不再可行。对不推荐答案的否决票有助于人们了解如何解决此问题。投票让其他人知道社区认为什么是最好的答案,什么答案不应该尝试。尽量不要让自己在这个过程中显得如此受伤。对于使用这个答案的人,请先看这篇文章。IE11与这种方法存在一些兼容性问题。最有用的最新答案。应该在顶部。你实际上不需要双重爆炸
开始时,它会自动将自身转换为布尔值。此外,测试方法将比匹配方法更快。通常这种微优化并不重要,但由于您试图在页面加载期间启动备用脚本,因此优化在这种情况下确实很重要。@StephenMIrving double bang是一种语义。比方说,如果您要用typescript编写,它将向您显示一个错误类型的错误被传递到if子句中。所以基本上我是手动进行类型转换的。另外,我想说,
test
在这里将是一个更好的匹配,尽管也主要是出于语义目的,因为优化这里的微秒不会给你带来很多利润。这不会运行多次,所以没有人会注意到这样的性能变化。在这两个方面我都不同意你的观点。“双重爆炸”是无用的、没有价值的恶臭绒毛。如果在Typescript中有一个不相关的目的,因为我们没有讨论Typescript代码,那么这就是JS,JS将隐式类型强制作为一个特性。这里没有必要手动执行类型强制。其次,正如我在最初的回答中所解释的,这段代码是在页面加载时运行的,并将分支脚本。每一个可以缩短初始加载时间和TTCP的ms都是有价值的,对于公司来说,这一价值可以用美元来量化。这不再是一个可行的答案。条件标记在ie 9之后不起作用。为什么需要前两个条件?如果您认为它们在所有浏览器中都是“未定义的”
,那么这些条件永远不会成立。如果它们仅适用于IE,那么它们仍然不是必需的,因为
navigator.userAgent.match(/trident/)
只会为IE返回true。
if(navigator.userLanguage !== "undefined" && navigator.systemLanguage !== "undefined" && navigator.userAgent.match(/trident/i)) {
    alert("hello explorer i catch U :D")
  }