質問

URLがSWFかJPGかを判断する方法(JavaScriptを使用するのが望ましい)はありますか?

明白な答えは、" .jpg"のファイル名を盗聴することです。または" .swf"しかし、サーバーによって動的に決定され、通常は多くのパラメーターを持ち、通常は拡張機能を含まないバナーを扱っています。

そのため、最初にファイルをロードしてから、何らかの方法でそれを読んでSWFかJPGかを判断してから配置できるかどうか疑問に思います。JPGとSWFを表示する必要があるJavaScriptコードは非常に違う。

ありがとう!

役に立ちましたか?

解決

動的なimgタグを作成することにより、javascriptを使用して画像かどうかを検出できます。

function isImage(url, callback) {
    var img = document.createElement('img');
    img.onload = function() {
        callback(url);
    }
    img.src = url;
}

そして次のように呼び出します:

isImage('http://animals.nationalgeographic.com/staticfiles/NGS/Shared/StaticFiles/animals/images/primary/bald-eagle-head.jpg', function(url) { alert(url + ' is a image'); });

更新 このバージョンは常にブール値でコールバックを実行します。

        function isImage(url) {
        var img = document.createElement('img');
        img.onload = function() {
            isImageCallback(url, true);
        }
        img.onerror = function() {
            isImageCallback(url, false);
        }
        img.src = url;
    }

    function isImageCallback(url, result) {
        if (result)
            alert(url + ' is an image');
        else
            alert(url + ' is not an image');
    }

isImageCallback関数にロジックを入力します。

他のヒント

次のように言って、Sijinの答えを拡張します。

URLへのHTTP HEADリクエストを使用して、リソースのMIMEタイプを調べることができます。君は 残りのファイルをそのままダウンロードする必要はありません。

完全に未検証、基本的には単なるアイデア:

function isImage(url)
{
    var http = getHTTPObject();
    http.onreadystatechange = function ()
    {
        if (http.readyState == 4)
        {
            var contentType = http.getResponseHeader("Content Type");
            if (contentType == "image/gif" || contentType == "image/jpeg")
                return true;
            else
                return false;
        }
    }

    http.open("HEAD",url,true);
    http.send(null);
}


function getHTTPObject() 
{
    if (window.XMLHttpRequest)
    {
        return new XMLHttpRequest();
    }
    else 
    {
        if (window.ActiveXObject)
        {
            return new ActiveXObject("Microsoft.XMLHTTP"); 
        }
    }
    return false;
}

お持ちの正確なセットアップがわかりませんが、HTTPレスポンスを使用してmimeタイプを確認し、イメージとフラッシュを判別できますか?

URLに拡張子がない場合、サーバーからファイルを要求せずに通知する方法はありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top