2013-02-12 7 views
12

Für eine Webanwendung, die eine Vorschau der Dokumente im Browser ermöglicht, möchte ich prüfen, ob der Browser des Benutzers eine Vorschau des Mime-Typs des aktuellen Dokuments unterstützt.Browser-Unterstützung für bestimmte Mime-Typen prüfen?

Gibt es eine Javascript-basierte Möglichkeit, den aktuellen Mime-Typ mit den vom Browser unterstützten Typen zu vergleichen?

Danke!

+0

Wenn der Browser die Seite vom Server angefordert hat, auf dem Sie dies tun möchten, wird eine Liste der akzeptierten Dokumenttypen gesendet (der HTTP-Header "accept"). So können Sie tatsächlich wissen, bevor Sie ihnen die Seite zeigen (und Sie können diese Informationen für JavaScript verfügbar machen, indem Sie sie in die Antwort einbetten). Dies erfordert natürlich, dass Sie dynamisch auf die ursprüngliche Anfrage reagieren und möglicherweise nicht das sind, wonach Sie suchen. –

+0

Vielleicht [diese Frage] (http://stackoverflow.com/questions/10704489/javascript-get-mime-type-support) hilft. Sie haben ['navigator.mimeTypes'] (https://developer.mozilla.org/en-US/docs/DOM/window.navigator.mimeTypes) benutzt, was wahrscheinlich nicht in allen Browsern funktioniert ... – hsan

+0

@TJCrowder : das ist eine gute Idee. Da meine Anwendung ExtJS-Ajax-basiert ist, kann das ein durchaus vielversprechender Ansatz sein. Ich werde es versuchen. Vielen Dank! – Windwalker

Antwort

3

Sie könnten einen AJAX-Aufruf machen und Response-Header für MIME-Typ überprüfen.

$.ajax({ 
    type: "GET", 
    url: 'http://..../thing.pdf', 
    success: function (output, status, xhr) { 
     alert("done!"+ xhr.getAllResponseHeaders()); 
     alert("done!"+ xhr.getResponseHeader("Content-Type")); 
    } 
    }); 
+0

Danke für den Hinweis, der sich ziemlich vielversprechend anhört. Leider funktionieren Ajax-Aufrufe an Binärdateien nicht im IE, siehe: http: // stackoverflow.com/questions/9783330/getting-the-c00ce514-Fehler-in-ie-wenn-zu-laden-a-swf-Datei – Windwalker

+0

Ahhh verdammt, es scheint immer bei IE nicht zu stoppen :( – Timmetje

+0

Idee : Wie wäre es, wenn Sie zum Beispiel einen Proxy erstellen: proxy.php? File = document.pdf Der IE wird das nicht als Binärdatei behandeln und Sie können Ihren Antwort-Header in Ihrem Proxy setzen, einfach durch den MIME-Typ usw. – Timmetje

0

Wenn Sie festlegen, welche Plugin für bestimmten Dokumenttyp benötigt wird, können Sie versuchen dann zu sehen, wenn nötig Plugin vorhanden ist. Sollte zumindest auf Firefox und Chrome funktionieren. window.navigator.plugins

And here is a nice example

+1

Eigentlich geht es darum, dass unsere Kunden fast alle IE benutzen, da es für die meisten Firmen ein Standard ist.Das ist eine große Scheiße, wenn du immer mit altmodischen Browsern umgehen musst. ... – Windwalker

1

In dieser Frage gab es die gleiche Frage, die ich denke, versuchen Sie es

Check if a browser supports a specific MIME type?

+0

Entschuldigung, das ist nicht genau mein Fall. Ich bin clientside; dh Javascript (nicht PHP wie in der Ausgabe bezeichnet) und ich habe ein Dokument mit einem bestimmten Mime-Typ und ich würde gerne entscheiden, ob zu a) öffnen Sie das Dokument in einer internen Vorschau wie oder b) überspringen die interne Vorschau, wenn Mime-Typ nicht unterstützt – Windwalker

5

In neueren Browsern zu überprüfen, gibt es navigatior.plugins Array-ähnliches Objekt. Sie können jedes Plugin für Ihren Mime-Typ überprüfen.

Hier ist die Lösung gist und jsfiddle.

+2

es funktioniert, aber es sagt, dass Bild/jpg in Chrome nicht unterstützt wird. Gibt es einen Weg, alle Arten einschließlich der Bilder zu bekommen. –

Verwandte Themen