Frage

Gibt es eine Möglichkeit (vorzugsweise unter Verwendung von JavaScript), um zu bestimmen, ob eine URL zu einem SWF oder JPG ist?

Die offensichtliche Antwort ist den Dateinamen für „.jpg“ oder „.swf“ schnuppern, aber ich bin der Umgang mit Bannern, die vom Server dynamisch entschieden werden und haben in der Regel eine Menge von Parametern und beinhalten im Allgemeinen nicht eine Verlängerung .

so frage ich mich, wenn ich die Datei zuerst geladen werden konnte und es dann irgendwie lesen, um zu bestimmen, ob es SWF oder JPG, und es dann platzieren, da der JavaScript-Code muss ich hätte gerne ein JPG angezeigt vs eine SWF sehr anders.

Danke!

War es hilfreich?

Lösung

Sie könnten Sie Javascript verwenden, um festzustellen, ob es sich um ein Bild durch ein dynamisches img-Tag zu schaffen.

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

Und dann ruft es mit:

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

Aktualisieren Diese Version wird den Rückruf mit einem Booleschen Wert immer ausgeführt werden.

        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');
    }

Setzen Sie Ihre Logik in der isImageCallback Funktion.

Andere Tipps

Ich würde Sijin Antwort erweitern, indem er sagt:

Eine HTTP HEAD-Anfrage an die URL kann die Ressource Mime-Typen zu untersuchen, verwendet werden. Sie nicht auf diese Weise den Rest der Datei herunterladen müssen.

Völlig ungetestet, basicly nur eine Idee:

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;
}

Ich bin der von der genauen Setup nicht sicher, Sie haben, aber können Sie die HTTP-Antwort verwenden und überprüfen Sie den MIME-Typ Bild vs Flash zu bestimmen?

Wenn die URL eine Erweiterung nicht hat, dann gibt es keine Möglichkeit, ohne zuvor die Datei vom Server zu erzählen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top