【问题标题】:Issues with $(selector).load working randomly in Opera browser only$(selector).load 问题仅在 Opera 浏览器中随机工作
【发布时间】:2026-02-13 05:20:06
【问题描述】:

我想在使用 CSS 隐藏页面加载时淡入某些图像(显示:无;)。
这适用于 Firefox、Chrome、Safari、
在 Opera(最新版本:12.12)上,img 随机显示...

这里是 Jquery 代码:

$(document).ready(function () {
        $('img:hidden').load(function () {
            $('img:hidden').fadeIn(1000);
        });
    });

有人知道为什么它在 Opera 上随机运行吗?

谢谢

【问题讨论】:

  • 嗯,.load 不需要 url 吗?
  • 我可能应该重命名帖子的标题,因为问题是 .load ?

标签: jquery dom opera document-ready


【解决方案1】:

首先,如果图像可见,“加载”事件会更好地触发。 此外,根据我自己的经验,在某些情况下(例如 IE),以下技巧有助于解决问题。

$(document).ready( function() {

  if ( $.browser.opera ) {
    $('img:hidden').each( function() {
      $('img:hidden').fadeIn(1000);
    });
  }
  else {
    $('img:hidden').load( function() {
      $('img:hidden').fadeIn(1000);
    });
  }

});

【讨论】:

  • 感谢您的代码在所有浏览器中运行良好!我使用(没有测试浏览器): $('img:hidden').each(function() { $('img:hidden').fadeIn(1000); });
  • $.browser 已被弃用并已在 1.9 中删除,因此此代码迟早会坏掉。而且我看不出这应该如何解决 Opera 中的问题?介意再解释一下吗?
  • Christoph,我不是 jQuery 团队成员,所以我无法解释为什么它会有所帮助。正如我所写,它是“来自我自己的经验”——这意味着,我偶尔会发现这种方法,在网站上工作并遇到类似的问题(但使用 IE,而不是 Opera)。顺便说一句,此代码的关键特性不是您可能认为的 $.browser 检查,而是将 .load() 替换为 .each()。
【解决方案2】:

嗯,你不能错过 jQuery Docu 中的相应注释。字体大小就像500px...可能太大而无法识别? ;-D

与图像一起使用时加载事件的注意事项

一个共同的挑战 开发人员尝试使用 .load() 快捷方式解决的方法是执行 当图像(或图像集合)完全具有 加载。有几个已知的警告应该是 著名的。它们是:

它不能始终如一地工作,也不可靠 跨浏览器

如果图像 src 是,它不会在 WebKit 中正确触发 设置为与之前相同的 src

它没有正确地冒泡 DOM 树

对于已经存在于浏览器中的图像可以停止触发 缓存

【讨论】:

  • 大声笑是的,我刚刚检查了“新重新设计”的 jQuery 网站,它真的写得很大 :)
最近更新 更多