我遇到了一个问题,我们的许多支持电话是关于我们的图片没有加载,因为用户阻止亚马逊s3或类似的第三方服务.我使用第三方服务来托管图片,视频和一些JavaScript.有没有办法通过javascript检测客户端是否阻止域,以便我们显示消息而不是让用户联系支持?
$.ajax 'http://aws.amazon.com/s3/',
type: 'GET',
dataType: 'html'
complete: (e, xhr, settings) ->
if e.status == 200
console.log "Not Blocking S3"
else
console.log "Blocking S3"
根据评论,我尝试了它,但它仍然无法正常工作.当我没有块时它返回阻塞.
上面的示例coffeescript代码不起作用,因为我认为发生了安全性错误,因为它在不同的域上执行ajax. Firebug以红色显示请求,但是说200. e.status返回0.
解决方法:
从要检查的域加载图像.
<img id="checkImg" src="https://www.google.com/images/srpr/logo3w.pngAAA" />
只是一个常规的图像标记(注意最后的AAA,使其不起作用).然后你可以检查图像的宽度,看看它是否加载.
if(document.getElementById('checkImg').clientWidth != 275)
alert("Error")
Google徽标的宽度为275像素,但错误图片(至少在Chrome中)只有18像素.因此,如果图像宽度不是275px,我知道它没有加载.