【发布时间】:2018-09-03 18:53:26
【问题描述】:
我的网站上有一些跟踪像素,如果他们的服务器出现故障或速度变慢,我想防止它们影响我们的用户体验。指定浏览器应尝试加载给定 img 的最长时间的最简单方法是什么 - 即尝试 100 毫秒然后放弃? (我宁愿不跟踪给定的客户,也不愿让第三方服务器上的服务器挂起影响我们的网站)。
【问题讨论】:
标签: javascript html image
我的网站上有一些跟踪像素,如果他们的服务器出现故障或速度变慢,我想防止它们影响我们的用户体验。指定浏览器应尝试加载给定 img 的最长时间的最简单方法是什么 - 即尝试 100 毫秒然后放弃? (我宁愿不跟踪给定的客户,也不愿让第三方服务器上的服务器挂起影响我们的网站)。
【问题讨论】:
标签: javascript html image
您可以使用 JavaScript 插入 <img> 并在 100 毫秒后使用 setTimeout() 将其删除。
jQuery 示例:
var tracker = $("<img>", { src: trackingUrl }).appendTo(document.body);
setTimeout(function() { tracker.remove(); }, 100);
【讨论】:
您应该在文档准备好时加载它们。 或在最后一行(在 html 中)。这样 - 它不会损害用户体验。 document ready 也可以与 jQuery 一起使用。
但你可以使用 window.load。
通常(并非总是)- 所有脚本都应位于页面末尾。
如果你想强制超时 KILL :
创建一个img 标记。
将load 事件附加到img(此函数将设置标志:downloaded=1;)
设置源。
用setTimeout 函数你会杀死img。
怎么样?
如果在 X MS 之后下载的 ==0 则杀死。
所以:每个加载事件(来自 IMg)都在设置一个标志(下载=1)。
你的超时功能什么都不关心!!!在 x MS 之后,她会杀死 img - 仅当下载 ==0 时。
【讨论】:
<img>?
<img>的状态。
您必须使用 javascript 来执行此操作,HTML/HTTP 没有任何原生程序可以在页面基础上执行此操作。谷歌搜索“HTML IMG 超时”。
【讨论】:
作为img.parentNode.removeChild(img)
并非所有img 都有容器。
var img = new Image()
img.src = '...third-party server...'
setTimeout(function() {
img.removeAttribute('src')
}, 100)
【讨论】:
您可以在 IMG 标记中调用服务器进程。让它担心负载超时。
【讨论】: