4

ユーザーが Amazon 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 を返します。

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 に答える