6

他の画像URLにリダイレクトする必要がある可能性のあるクロスドメインURLに<img>(属性を使用して)リンクされているものがいくつかあります。srcブラウザが元のURLを要求したときに発生するすべてのリダイレクトを何らかの方法で追跡する必要があります。

したがって、たとえば、私が持っている場合:

<img src='http://www.something.com/redirect'/>

にカスタムヘッダーを送信http://www.something.com/redirectしました。それについて知る必要があります。JSまたはjQueryでリダイレクトを検出するにはどうすればよいですか?locationhttp://something.com/pic.jpg<img>

4

4 に答える 4

1

私はそれが完全に可能であるとは思いません(もちろん私は専門家ではありませんが、それはAFAIKです)、少なくとも人が考えるほど簡単ではありません。

これがあなたが探しているものにできるだけ近いと思うものです、それがあなたにいくつかのアイデアを与えることを願っています

var req = new XMLHttpRequest();
$('img').each(function() {
    req.open('GET', $(this).prop('src'), false);
    req.send(null);
    alert(req.status);
});

2つの欠点:

  1. 同じドメインの画像のみ。
  2. 画像を2回リクエストする必要があります(または、最初にリクエストを実行してから、結果を使用して画像を表示できます)
于 2012-07-26T06:39:40.503 に答える
1
<script type="text/javascript" src="jquery-1.7.1.min.js"></script>
<img id='img' src='' width='200' />
<script type='text/javascript'>

/* our image */
var image =  new Image();
$(image).load('yourimage.png', function(response, status, xhr) {
    if (xhr.status == 200) {
        // image loaded, now display the image
        $('#img').attr('src','yourimage.png')
    } else {
        alert(xhr.status);
    }
});

</script>
于 2012-07-26T07:23:45.353 に答える
1

IE7に制約されていない場合は、corsソリューションを使用できます。これにより、JSON-Pの制限なしにクロスドメインをリクエストできます(つまり、ステータスコードを取得できます)。

詳細については、 https://developer.mozilla.org/en/http_access_controlを参照してください。単純なGETリクエストの場合は問題ありませんが、POSTが必要な場合は、リクエストをプリフライトする必要があります。

于 2012-07-30T05:05:08.993 に答える
0

Ajaxを使用して画像をロードするのはどうですか、テストされていない疑似コードは次のとおりです。

HTML:

<img id="img1" src="blank.gif">

JQuery:

GetImage("http://www.something.com/redirect");

function GetImage(url)
{
    $.ajax({
        type: "GET",
        url: url,
        success: function(data, textStatus) {
            if (data.redirect) {
                // data.redirect contains the string URL to redirect to
                ProcessLocationHeader(data);
                GetImage(data.redirect);
            }
            else {
                // No redirect means we have the correct image
                $("#img1").src = url;
            }
        }
    });
}

ブラウザは画像をキャッシュするため、サーバーtwizeからは読み込まれません。

于 2012-07-31T09:56:50.983 に答える