【问题标题】:<img src> w/ timeout?<img src> 有超时吗?
【发布时间】:2018-09-03 18:53:26
【问题描述】:

我的网站上有一些跟踪像素,如果他们的服务器出现故障或速度变慢,我想防止它们影响我们的用户体验。指定浏览器应尝试加载给定 img 的最长时间的最简单方法是什么 - 即尝试 100 毫秒然后放弃? (我宁愿不跟踪给定的客户,也不愿让第三方服务器上的服务器挂起影响我们的网站)。

【问题讨论】:

    标签: javascript html image


    【解决方案1】:

    您可以使用 JavaScript 插入 &lt;img&gt; 并在 100 毫秒后使用 setTimeout() 将其删除。

    jQuery 示例:

    var tracker = $("<img>", { src: trackingUrl }).appendTo(document.body);
    setTimeout(function() { tracker.remove(); }, 100);
    

    【讨论】:

      【解决方案2】:

      您应该在文档准备好时加载它们。 或在最后一行(在 html 中)。这样 - 它不会损害用户体验。 document ready 也可以与 jQuery 一起使用。

      但你可以使用 window.load。

      通常(并非总是)- 所有脚本都应位于页面末尾。

      如果你想强制超时 KILL :

      创建一个img 标记。

      load 事件附加到img(此函数将设置标志:downloaded=1;)

      设置源。

      setTimeout 函数你会杀死img。

      怎么样?

      如果在 X MS 之后下载的 ==0 则杀死。

      所以:每个加载事件(来自 IMg)都在设置一个标志(下载=1)。

      你的超时功能什么都不关心!!!在 x MS 之后,她会杀死 img - 仅当下载 ==0 时。

      【讨论】:

      • 是的,但是状态栏仍然显示正在下载数据,所以看起来还没有完成。我真的很想有一种实际的方法来定义超时。
      • 为什么要打扰条件而不是删除&lt;img&gt;
      • @Electro 它是一个跟踪像素。问题是有时像素主机很慢......所以他想防止等待......并杀死 - 如果不成功,则在 2 秒后(例如)删除 img。但如果它在 2 秒内成功(下载==1),所以不要删除 img。
      • 浪费在额外的代码中来跟踪&lt;img&gt;的状态。
      • @Electro 1 正在寻找另一个像素的 2 个像素呢?然后你删除其中的1个......?你不应该仅仅因为你想要而删除。你永远不会知道脚本背后到底在做什么。
      【解决方案3】:

      您必须使用 javascript 来执行此操作,HTML/HTTP 没有任何原生程序可以在页面基础上执行此操作。谷歌搜索“HTML IMG 超时”。

      【讨论】:

        【解决方案4】:

        作为img.parentNode.removeChild(img)

        并非所有img 都有容器。

        var img = new Image()
        img.src = '...third-party server...'
        setTimeout(function() {
          img.removeAttribute('src')
        }, 100)
        

        【讨论】:

        • 您能否添加更多解释,以便其他人可以从您的代码中学习?
        • 我的实验结果。
        【解决方案5】:

        您可以在 IMG 标记中调用服务器进程。让它担心负载超时。

        【讨论】:

        • 标签中已经有一个服务器进程:它提供“图像”。这是需要时间的,需要在客户端取消。如果取消交给服务器,取消也需要时间。
        猜你喜欢
        • 1970-01-01
        • 2020-07-21
        • 1970-01-01
        • 1970-01-01
        • 2011-02-07
        • 2010-12-22
        • 1970-01-01
        • 1970-01-01
        • 2012-09-28
        相关资源
        最近更新 更多