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

发布于 2024-12-02 11:54:01 字数 453 浏览 1 评论 0原文

我对 Internet Explorer 有一个不愉快的问题(当然)。问题是 不会刷新 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'});

I've an unpleasant issue with Internet Explorer (of course). The thing is that this doesn't refresh the image in Internet Explorer 8 while in other browsers it does perfectly. I believe that the issue lies in this part of the code, but I can't figure what is it.

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'});

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

猥琐帝 2024-12-09 11:54:01

好吧,我想通了。问题在于 ajax 调用被缓存:

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

添加: cache: false 就可以了。

Alright, I figured it out. The issue is with ajax call getting cached:

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

Adding: cache: false did the trick.

月下凄凉 2024-12-09 11:54:01

我遇到了这个确切的问题,经过几个小时使用不同的选项后,这是最终的解决方案:

原始代码结构:

注意:这适用于所有浏览器,不包括开发的浏览器由我们在 Microsoft 的朋友提供。

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?”...好吧,我只是不相信即,期间。我宁愿只修复 IE9,也不愿处理任何与 IE 相关的问题。

我希望这对某人有帮助。

I had this exact issue and after hours of playing with different options, this was the ultimate fix:

Orig Code Structure:

Note: This worked in all browsers, excluding the one developed by our friends at Microsoft.

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 );

.

With The Fix:

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;

  }

You may ask "Why parseInt( $.browser.version ) < 10 rather than 9?"... well, I just don't trust IE, period. I'd rather just give IE9 the fix as well rather than deal with any IE related issues.

I hope this helps someone.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文