如何通過JavaScript檢測瀏覽器是否支持CSS3媒體查詢?如何通過JavaScript檢測瀏覽器是否支持CSS3媒體查詢和CSS3漸變?
如何通過JavaScript檢測瀏覽器是否支持CSS3漸變?
謝謝。
如何通過JavaScript檢測瀏覽器是否支持CSS3媒體查詢?如何通過JavaScript檢測瀏覽器是否支持CSS3媒體查詢和CSS3漸變?
如何通過JavaScript檢測瀏覽器是否支持CSS3漸變?
謝謝。
看看http://modernizr.com/,這是使用javascript進行featuredetection的一個很好的庫。
破解開Modernizr(可測試媒體查詢),我們可以看到它使用了window.matchMedia
(MDN page)功能。我們可以在普通的舊香草JS檢查,看看是否函數存在(Modernizr的是真的真棒,但有時你只是想一塊磚,不是房子):
function mediaQueriesSupported()
{
if(typeof window.matchMedia != "undefined" || typeof window.msMatchMedia != "undefined")
{
// alert("media queries are supported!");
return true;
}else{
// alert("no media query support :(");
return false;
}
}
或者更優雅:
function mediaQueriesSupported()
{
return (typeof window.matchMedia != "undefined" || typeof window.msMatchMedia != "undefined");
}
我已經在支持媒體查詢以下瀏覽器進行測試,所有正確返回真:
我已經不支持媒體查詢以下瀏覽器進行測試,全部正常返回false:
至於梯度支持檢測,有一些很好的答案here和here。事實上,您只需設置屬性並進行測試即可。瀏覽器會拋出垃圾或不支持的CSS屬性。
編輯:
Niet的擁有here一個很好的回答這個問題,類似於我的梯度檢測的建議。這不是純粹的Javascript(它需要非常少量的CSS),但它是一個絕對的傻瓜式的方法。
對於「有時你只是想要磚塊而不是房子」而言+1 +1 – 2013-08-07 12:55:42
IE9支持CSS媒體查詢,但沒有'matchMedia' JavaScript方法。 – Etienne 2013-10-29 16:15:52
@Etienne我編輯了我的答案以涵蓋IE9。但我實際上沒有準備測試9的電腦,所以它可能無法正常工作。這個改變使我的代碼更接近Modernizr的'mq'函數(在試圖運行它之前檢查瀏覽器是否支持特定的媒體查詢)。我的JSFiddle也會更新,如果有人想嘗試它(比較,[這裏是舊的JSFiddle](http:// jsfiddle。net/3vbNb /)) – 2013-11-11 18:05:43