Firefox 中“图像损坏或被截断”的处理方法

2023-12-29

PLUGIN

我正在使用一个名为的 jQuery 插件lazyload https://github.com/tuupola/jquery_lazyload.

这是做什么的lazy加载图像 - 这意味着它不会在浏览器中渲染它们,直到图像位于视口范围内。

例如,当您的页面包含许多图像,并且您不希望它永远花费在初始加载上时,这非常有用。

FIREFOX

好的,所以我也在使用Firefox版本23.0.1

PROBLEM

该插件很棒,但是当在一些图像后向下滚动时,我开始收到图像无法加载的错误(只有一个用于损坏图像链接的通用占位符),并且在控制台中它logs:

Image corrupt or truncated: [image url]

并不是说形象有问题。它们单独渲染都很好。

它不在特定图像上,因为它是随机的。如果我再次加载页面,原来的图像corrupt现在可以加载,其他图像返回损坏的链接并记录corrupt在控制台中。

我四处寻找这个,似乎同时提取一个问题<img>src 标签。

可能应该在获取时设置延迟,但是您不能总是知道延迟应该是多长时间。如果一个图像比另一个图像大,它仍然可能发生冲突(具有静态延迟时间,而不是静态延迟时间)complete打回来)。

所以,我想请求:

a)如果有人知道解决方案(例如捕获错误发生时并重新触发加载图像功能)
b)如果有人可以提出一个$.extend()到上面的库(lazyload),它将创建一个回调函数并等待,直到所有活动的获取都完成complete在加载下一个之前(如果这是问题 - 我不确定是否是) 我不是 jQuery 忍者,所以我对代码有点迷失。我可以弄清楚,但它可能会很脏......
c)如果这不是问题,那么我将不胜感激有关如何解决此问题的一些指导


正如对此所建议的answer https://stackoverflow.com/questions/11928878/detect-image-corrupt-or-truncated-in-firefox与您类似的问题:

看来,当更改 img 标签的 src 属性时, Firefox 触发加载事件。这与 HTML5 是相反的 规范,其中说如果 src 属性改变,那么 任何其他已经在进行的提取都应该结束(火狐浏览器 做),并且不应发送任何事件。应发送加载事件 仅当提取成功完成时。所以我想说的是事实 您收到加载事件是 Firefox 的一个错误。

进而:

最好的选择可能是每次创建一个新元素 希望更改 src 属性。

这是有道理的。 里面lazyload代码中,您会发现这一部分,似乎是在图像加载时响应触发的滚动事件appear:

    /* When appear is triggered load original image. */
    $self.one("appear", function() {
        if (!this.loaded) {
            if (settings.appear) {
                var elements_left = elements.length;
                settings.appear.call(self, elements_left, settings);
            }
            $("<img />")
                .bind("load", function() {

                    var original = $self.attr("data-" + settings.data_attribute);
                    $self.hide();
                    if ($self.is("img")) {
                        $self.attr("src", original);
                    } else {
                        $self.css("background-image", "url('" + original + "')");
                    }
                    $self[settings.effect](settings.effect_speed);

                    self.loaded = true;

您可以放置​​一个 AND 运算符,后跟一些标志或函数返回,以验证最后一个图像是否已完全加载到该部分:

if ($self.is("img") && lastImageIsLoadde() === true) { /*pseudocode here*/

从而防止img src在正确时间之前被替换(因为settings.placeholder是脚本在滚动时取代要加载的图像的图像),看看它是否适合您。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Firefox 中“图像损坏或被截断”的处理方法 的相关文章

  • AngularJS + jQuery 移动

    是否还有其他可能性来设计AngularJS以移动友好的方式应用程序CSS 我正在计划一个移动应用程序 并希望使用 AngularJS 进行逻辑和数据绑定 但我不想自己设计所有内容CSS The AngularJSFAQ说它使用jQuery
  • 从 URL 任何文件类型创建图像

    我知道imagecreatefromgif https www php net manual en function imagecreatefromgif php imagecreatefromjpeg https www php net
  • 返回视图作为 JSON 对象的一部分

    我有一个应用程序只加载一次完整视图 我这样做的原因并不重要 重要的是 其余内容只会以部分视图的形式返回 除了一些内容之外 我还有一些 JSON 对象 我想通过每个 AJAX 请求在服务器之间来回传递 有没有办法返回一个 JSON 对象 并将
  • Chrome --app 相当于 Firefox\IE

    我有一个网络应用程序 客户要求单击不同按钮时更改浏览器窗口大小 我发现在那link https stackoverflow com questions 13436855 launch google chrome from the comma
  • 如何从 html 页面 [javascript] 调用 Web 服务方法而不刷新页面

    我有一个webservice这将返回一个值 我的要求是 我需要调用它webservice从一个index html页面 该页面有一个 html 提交按钮 在该按钮上单击我正在呼叫JavaScript 从那里我想调用网络方法 我怎样才能做到这
  • 轮播滑动(未滑动)事件上的火灾事件,Bootstrap 3

    Bootstrap 2 似乎可以很好地处理幻灯片事件 请参阅这个问题 https stackoverflow com questions 9651466 how to attach slide slid events to the boot
  • Google Apps 脚本中 $.ajax() 的服务器端等效项是什么?

    我想在 Google App 脚本中从服务器端代码执行 HTTP 请求Authorization标头 是否有用于发送 HTTP 请求的 App Script API Google Apps 脚本中的这段代码相当于什么 var api URL
  • 从 jQuery UI 对话框调用 Bootstrap 模式:超出最大调用堆栈大小

    我有一个有点奇怪的问题 我正在调用 Bootstrap Modal 同时打开了 jQuery UI 对话框并且正在获取RangeError Maximum call stack size exceeded 在控制台中 奇怪的是 只有当我在打
  • 配置 Jackson 在 Spring Boot 中省略延迟加载属性

    在纯java配置的spring boot mvc项目中如何配置Jackson以省略延迟加载属性 使用最新版本的 Spring Boot 这要容易得多 com fasterxml jackson databind Module 类型的任何 b
  • 如何在mozilla firefox上获得线性渐变效果

    我正在使用下面的CSS来获得线性渐变效果 但它在mozilla firefox中不起作用 你们中的任何人都知道它吗 请帮助在firefox中也获得相同的效果 CSS 是 background image webkit linear grad
  • 在 Safari 中提交表单后无法对 DOM 进行样式更改

    在 Safari 中提交表单后 我在对 DOM 进行样式更改时遇到问题 有谁知道它是否可能 这是 Safari 预期的浏览器行为吗 我设置了一个非常简单的示例 以便您可以看到实际问题 http jamesmichaelking com st
  • JQuery 更改内部文本但保留 html

    我想更改 HTML 元素的文本 但使用 jQuery 保留内部 html 的其余部分 例如 a href link html Some text img src image jpg a 将 某些文本 替换为 其他文本 结果应如下所示 a h
  • 将 Json 数据返回给 Ajax 调用

    我在 MVC 中有一个方法 我将其发布到它 并且我需要返回一些数据以进行处理 这是我发布到的 MVC 方法 返回值是 json 数据 HttpPost public JsonResult GetCalculateAmortizationSc
  • Javascript - 使数组索引 toLowerCase() 不起作用

    我试图将所有数组索引设置为小写字符串 但它不起作用 我在这里查看了其他答案并尝试了他们的解决方案 例如使用toString 添加之前toLowerCase但它不起作用 这很奇怪 我创建了一个问题的jsfiddlehere https jsf
  • Drupal 8 图像与图像样式

    在drupal 7中 我使用函数image style url style uri 生成具有样式的新图像并返回图像的路径 那么在 drupal 8 中会用什么来代替它呢 谢谢 Per the 变更记录 https www drupal or
  • 使用淘汰赛动态显示/隐藏元素

    我有一个表 有四列 即代码 名称 数量和价格 其中 我想动态更改数量列的内容 元素 通常 它应该显示其中显示数量的元素 当用户单击元素时 我想显示该元素 以便用户可以编辑数量 我正在尝试按照 示例2 来实现淘汰赛文档链接 http knoc
  • Firefox 上的 jquery 焦点未设置

    我想将焦点设置到我的文本区域 以下是我的代码 this textInput val show focus 但它不起作用 实际上 当我按下鼠标按钮时 它会出现 但是当我松开鼠标时 它会从文本区域中删除 因此 经过大量搜索后 我发现 setTi
  • 带有桌子的嵌套表

    我在应用了表排序器的表中嵌套了表 它在嵌套表中添加了排序标题 但是它们没有对行进行排序 并且抛出了JavaScript错误 我想拥有 嵌套表不可排序 巢表上的排序实际上可以工作 但不是现状 您的第一个选择要容易得多 使嵌套表不可排序 像这样
  • 检查外部图像是否存在的正确 PHP 方法?

    我知道至少有 10 个相同的问题有答案 但似乎没有一个对我来说完美无缺 我正在尝试检查内部或外部图像是否存在 图像 URL 是否有效 fopen url r 失败 除非我使用 fopen Warning fopen http example
  • 如何更改数据表中标题单元格的内容?

    我正在使用数据表 http datatables net plugin 在我的可排序列上 我想用按钮替换列文本 但是这样做 oSettings aoColumns i nTh text 我可以检索相应列的文本 但是 oSettings ao

随机推荐