2012-06-11 1 views
4

У меня возникла проблема, когда многие наши запросы поддержки касаются наших изображений, которые не загружаются, поскольку пользователь блокирует амазонку 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.

+2

Try и загрузить ресурс из этой третьей стороны, с помощью JavaScript, и, если он не может быть восстановлен, дать сообщение? –

+0

Я думаю, что @DavidThomas означает, что вы должны использовать javascript для обнаружения и сообщать результат на ваш веб-сервер. – bluevector

+0

@jonnyGold: Я действительно был; уточнил первоначальный комментарий. =) –

ответ

7

Загрузите изображение из домена, который вы хотите проверить.

<img id="checkImg" src="https://www.google.com/images/srpr/logo3w.pngAAA" /> 

Просто обычный тег изображения (обратите внимание на AAA в конце, чтобы сделать его не работы). Затем вы можете проверить ширину изображения, чтобы увидеть, загружена ли она или нет.

if(document.getElementById('checkImg').clientWidth != 275) 
    alert("Error") 

Логотип Google является 275px шириной, но изображение ошибка (в Chrome по крайней мере) только 18px. Поэтому, если изображение не имеет ширины 275 пикселей, я знаю, что оно не загрузилось.

Demo

+0

+1 - Таким образом, вы не получите проблем с доступом к перекрестному домену, которые вы получите в Javascript, пытающемся загрузить внешние ресурсы. –

+0

это отличная идея. +1 –