4

我遇到了一个问题,我们的很多支持电话都是关于我们的图像没有加载的,因为用户阻止了 amazon s3 或类似的第 3 方服务。我使用 3rd 方服务来托管图像、视频和一些 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"

根据评论,我尝试了它,但它仍然无法正常工作。当我没有阻塞时,它会返回阻塞。

上面的示例咖啡脚本代码不起作用,因为我认为发生安全错误是因为它在不同的域上执行 ajax。Firebug 将请求显示为红色,但显示为 200。e.status 返回 0。

4

1 回答 1

7

从您要检查的域加载图像。

<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 宽,我知道它没有加载。

演示

于 2012-06-12T22:05:03.233 回答