JavaScript img.src onerror event - get reason of error
从
有没有办法知道错误是由于网络错误,比如
编辑:
我不是在寻找另一种加载资源的方法,比如AJAX请求。 我需要专门针对带有
编辑
也许你是电子邮件或Javascript功能有限的其他客户端的像素跟踪。
想到的一个想法是在
关于网络超时,我会提出这样的想法:用户打开电子邮件,完全加载电子邮件,然后断开与互联网的连接,不知何故,这不会给跟踪器足够的时间加载。
https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setTimeout
我建议在
这将继续尝试设置/加载
至于确定图像加载上的状态
可以在以下位置找到
https://www.w3.org/TR/html/semantics-embedded-content.html#htmlimageelement-htmlimageelement
老答案:
也许您想要尝试的路线是使用AJAX加载图像数据并将
编辑
或者使用AJAX来确定图像是否正确加载,然后使用发送到AJAX的相同URL作为
编辑
关于网络超时,我发现这个线程是有用的JQuery Ajax - 如何在进行Ajax调用时检测网络连接错误
显然你可以像使用
转换为Base64
https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding
-
https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/btoa
1var encodedData = window.btoa("Hello, world"); // encode a string
或者,如果您对能够使用
状态代码检查jQuery的AJAX
jQuery:如何从$ .ajax.error方法中获取HTTP状态代码?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | $.ajax({ type: 'GET', url: '/path-to-my/image.png', data: null, success: function(data){ alert('horray! 200 status code!'); // convert to base64; add to img.src # btoa(data) document.querySelector("#hlogo img").src ="data:;base64,"+ data; }, error:function (xhr, ajaxOptions, thrownError){ switch (xhr.status) { case 400: // Take action, referencing xhr.responseText as needed. case 404: // Take action, referencing xhr.responseText as needed. case 500: // Take action, referencing xhr.responseText as needed. } }); |
笔记
-
https://tools.ietf.org/html/rfc2397#section-3
1
2
3
4dataurl :="data:" [ mediatype ] [";base64" ]"," data
mediatype := [ type"/" subtype ] *(";" parameter )
data := *urlchar
parameter := attribute"=" value -
https://tools.ietf.org/html/rfc2046#section-4.2
Using of a generic-purpose image viewing application this way
inherits the security problems of the most dangerous type supported
by the application. -
https://tools.ietf.org/html/rfc2397#page-4
The effect of using long"data" URLs in applications is currently
unknown; some software packages may exhibit unreasonable behavior
when confronted with data that exceeds its allocated buffer size.
其他参考文献
- 未知的文件类型MIME?
- 使用jQuery异步加载图像