如何在Internet Explorer 8中使用新的Image()?

3
我在使用Internet Explorer(当然是最不愉快的)时遇到一个问题。问题是,在其他浏览器中完美运行的this图片在Internet Explorer 8中无法刷新。我相信问题出在这段代码中,但我无法确定具体是哪里出了问题。
var img = new Image();
$(img).load(function() {
    monitor.holder.empty()
    .append(this)
    .fadeIn('fast');
}).addClass('round').attr({'src': 'ylemiste/'+ json.filename, 'alt': json.filename, 'width': '640', 'height': '480'});

你尝试使用“.prop()”而不是“.attr()”来设置“src”等吗? - Pointy
@Pointy,不是的,但请查看我的答案。我找到了问题所在。 - Rihards
2
你应该使用 $('<img />').... 的方式来创建图片,这是 "jQuery 方式"。 - zzzzBov
@zzzzBov,谢谢你的提示。我不知道那个。;o - Rihards
2个回答

0

好的,我弄清楚了。问题出在 ajax 调用被缓存了:

$.ajax({ url: "last.php", dataType: "json", cache: false}).success(function(json){
    ...
});

添加:cache: false 就解决了问题。

0

我曾经遇到过这个问题,花了数小时尝试不同的选项,最终找到了解决方法:

原始代码结构:

注意:这在所有浏览器中都有效,除了我们的朋友微软开发的那个。

var img = new Image();
var url = 'http://i.imgur.com/DQP7F.jpg';

$( img )
  /*wait for image to load*/
  .load( function () {

    alert( 'All loaded' );

  })

  /*problem getting img?*/
  .error( function() {

    alert( 'Bad things' );   

  })

  /*set img src*/
  .attr( 'src' , url );

.

使用修复后的版本:

var img = new Image();
var url = 'http://i.imgur.com/DQP7F.jpg';

$( img )
  /*wait for image to load*/
  .load( function () {

    alert( 'I fire after the image has fully loaded' )

  })

  /*problem getting img?*/
  .error( function() {

    alert( 'Bad things' );   

  })

  /*set img src*/
  .attr( 'src' , url );

  /*IE hack; really hate you right now IE*/
  if( $.browser.msie && parseInt( $.browser.version ) < 10 ){

    img.src = url;

  }

你可能会问:“为什么要使用parseInt( $.browser.version ) < 10而不是9?”... 嗯,我就是不相信IE,总的来说。我宁愿将修复程序也适用于IE9,而不是处理任何与IE相关的问题。

希望这能帮助到某个人。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接