2013-02-12 144 views
12

對於允許在瀏覽器中預覽文檔的Web應用程序,我想檢查用戶的瀏覽器是否支持當前文檔的MIME類型的預覽。檢查瀏覽器是否支持特定的MIME類型?

是否有一種基於Javascript的方式來匹配當前的MIME類型與瀏覽器支持的類型?

謝謝!

+0

當瀏覽器從您想要執行此操作的服務器請求頁面時,它會通過它接受的各種文檔(HTTP'accept'請求標頭)發送一個列表。所以,你甚至可以在你向他們展示頁面之前知道(你可以通過將其嵌入到響應中來將這些信息提供給JavaScript)。當然,這要求您動態響應最初的請求,可能不是您要查找的內容。 – 2013-02-12 15:03:11

+0

也許[這個問題](http://stackoverflow.com/questions/10704489/javascript-get-mime-type-support)有幫助。他們使用['navigator.mimeTypes'](https://developer.mozilla.org/en-US/docs/DOM/window.navigator.mimeTypes)這可能不適用於所有瀏覽器... – hsan 2013-02-12 15:03:57

+0

@TJCrowder :這是一個好主意。由於我的應用程序是基於ExtJS-Ajax的,可能是一個相當有前途的方法。我會試一試。謝謝! – Windwalker 2013-02-12 16:50:44

回答

3

您可以進行AJAX調用並檢查mimetype的響應標頭。

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

感謝您的提示,這聽起來很有希望。不幸的是,Ajax調用二進制文件在IE中不起作用,請參閱:http:// stackoverflow。com/questions/9783330/getting-the-c00ce514-ie-when-attempting-to-load-a-swf-file – Windwalker 2013-02-12 16:44:20

+0

Ahhh darn,它似乎總是停在IE不是:( – Timmetje 2013-02-12 16:47:56

+0

Idea :你如何創建一個代理例如:proxy.php?file = document.pdf IE不會將其作爲二進制文件處理,你可以在你的代理中設置你的響應標題,只要通過MIME類型等等。 – Timmetje 2013-02-12 16:49:19

0

如果您定義了特定文檔類型需要哪個插件,那麼您可以嘗試查看是否需要插件。至少應該在Firefox和Chrome上運行。 window.navigator.plugins

And here is a nice example

+1

其實問題在於,我們的客戶幾乎都在使用IE,因爲它對大多數公司來說都是相當標準的,如果你總是不得不面對老式的瀏覽器,那就太糟糕了。 ... – Windwalker 2013-02-12 16:46:40

1

在這個問題上出現了同樣的問題,我認爲,試圖看看它

Check if a browser supports a specific MIME type?

+0

對不起,這不完全是我的情況。 我是客戶;即Javascript(不是PHP中的問題引用),我確實有一個具有某種MIME類型的文檔,我想決定是否要 a)打開在內部預覽中顯示文檔,如 或 b)跳過內部預覽,如果不支持MIME類型 – Windwalker 2013-02-12 15:22:56

5

在最新的瀏覽器有navigatior.plugins陣列狀物體。你可以檢查你的MIME類型的每個插件。

這裏是解決方案gistjsfiddle

var mimeCheck = function (type) { 
    return Array.prototype.reduce.call(navigator.plugins, function (supported, plugin) { 
     return supported || Array.prototype.reduce.call(plugin, function (supported, mime) { 
      return supported || mime.type == type; 
     }, supported); 
    }, false); 
}; 
+2

它可以工作,但它說chrome不支持image/jpg。有沒有辦法讓所有類型包括圖像。 – 2016-03-04 18:48:59

相關問題