【问题标题】:This Javascript doesn't work in IE but works in Chrome, Firefox and Opera此 Javascript 不适用于 IE,但适用于 Chrome、Firefox 和 Opera
【发布时间】:2014-09-21 12:55:27
【问题描述】:

我有一个图像和一个微调器。我已经编写了一些代码来说明在加载任何 img 时删除类“微调器”。它适用于 Chrome、Firefox 和 Opera,但不适用于 Internet Explorer。

我在 Windows 7 上使用 Internet Explorer 11。

我在这里创建了一个非常基本的 jsfiddle 示例:http://jsfiddle.net/Forresty/o8v6xsze/

由于某种原因,它在任何浏览器中的 jsfiddle 中都不起作用,所以我不确定该怎么做。我已经使用单击功能对其进行了测试,因此如果单击图像,微调器类将被删除,并且它可以工作。所以我认为这与加载方面有关。

我的网站上还有一些其他的 javascript 正在运行,所以我认为这不是 IE 特定的问题。

代码如下:

HTML:

<div class="spinner"></div>
<img class="workImage" src="http://upload.wikimedia.org/wikipedia/commons/2/23/Lake_mapourika_NZ.jpeg">

css:

.workImage{
    width: 500px;
    height: 500px;
}

.spinner{
    width: 500px;
    height: 500px;
    background: red;
}

Javascript:

$('img').on('load', function() {
    $("div").removeClass("spinner");
})

我也试过这个javascript:

$('img').load(function() {
    $('div').removeClass('spinner');
})

我不知道我错过了什么。任何帮助,将不胜感激。

谢谢。

【问题讨论】:

标签: javascript jquery html css


【解决方案1】:

你需要在jsfiddle的左上角申请ondomready。它运作良好。我也在IE10中测试过。

http://jsfiddle.net/o8v6xsze/1/

要解决IE10中的问题,您可以使用:

$('img').on('load', function() {
    $("div").removeClass("spinner");
}).each(function() {
  if(this.complete) $(this).load();
});

http://jsfiddle.net/o8v6xsze/3/

它在我的 IE10 中运行。

【讨论】:

  • 谢谢。我刚刚测试了你的 jsfiddle,它适用于所有浏览器,但对我来说是 IE。你认为这是特定于我的 IE 版本吗?
  • 也许它禁用了javascript?运行一个简单的警报,看看它是否正常工作。
  • @Forrest 对不起,我的错误。它也不适用于我的 IE。我不知道我第一次看到了什么。会调查的
  • @Forrest 这绝对是antyrat描述的问题。如果您清除 IE 中的浏览缓存,它就可以工作。这就是我第一次看到它起作用的原因。
  • @Forrest 检查该代码是否有效。 IE 从未停止让我惊叹