【问题标题】:<img> blinks when src change in Firefox<img> 在 Firefox 中更改 src 时闪烁
【发布时间】:2012-07-20 01:47:30
【问题描述】:

我正在制作一张地图,当您将鼠标放在列表中的名称上时,地图的 &lt;img&gt; 将 src 属性更改为突出显示该区域的地图图像,我只使用 jquery 的 .attr() 方法改成这样。

$("img.map").attr("src","newmap.png");

它在除Firefox之外的所有浏览器中都很好用,当图像更改时,首先旧的消失然后有很短的时间没有显示任何内容,然后出现新图像,我怎样才能在像chrome这样的Firefox中顺利进行更改还是IE呢??
(时间真的很短,但是当鼠标在目录中移动时,图像会在鼠标移动的整个过程中消失)。
或者您可能知道实现该效果的更好方法。谢谢

【问题讨论】:

  • 为此使用css background sprites。没有预加载或 javascript(无论如何悬停),它们运行良好。

标签: javascript html firefox image


【解决方案1】:

尝试预加载您的图片。闪烁发生在浏览器正在加载新图像时。

【讨论】:

    【解决方案2】:

    这是因为src 属性明显改变了。好吧,新图像还没有下载。所以它必须向服务器发送一个请求并等待响应,而src 属性已经改变了。这就是为什么你在那里什么都看不到的原因。有办法解决这个问题。在 JavaScript 中,使用新图像作为源创建一个新图像元素。添加一个 onload 事件处理程序,它将更改您真正想要显示的图像的src 属性。是的,预加载可能有点困难,但它会减少初始页面加载时间并且它不会弄乱你的 HTML。

    【讨论】:

      【解决方案3】:

      在我的脑海中,悬停意图和背景图像的组合会有所帮助。

      悬停意图很好,因为您不想下载不必要的图像。

      如果您为包含 div(甚至图像本身)提供原始图像或上次查看图像的背景图像,则会减少闪烁效果。我怀疑这些图像更改的加载时间可能会有所不同,因此您也可以借此机会展示某种加载图标。

      说了这么多,我认为拥有原始图像然后在每次悬停区域时添加新图像更有意义。这样,您只能在图像元素不存在时添加它(保存 http 请求),甚至可以进行更优雅的更改(例如淡入原始图像)

      希望有帮助!

      【讨论】:

        【解决方案4】:

        问题是当你第一次引用它时浏览器正在下载它,而不是之前。

        我只需要两个图像元素并隐藏/显示它们,而不是更改单个元素的 src 属性。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-05-23
          • 2016-04-17
          • 1970-01-01
          • 2012-09-28
          • 2016-08-07
          相关资源
          最近更新 更多