でこれを行うことができますCSS.supports
。@supports
これは、現在 Firefox、Chrome、Opera、および Android ブラウザで利用できるCSS のルールの JavaScript 実装です( Can I Use... を参照)。
静的メソッドはCSS.supports()
、ブラウザーが特定の CSS 機能をサポートしているかどうかを示すブール値を返します。
– Mozilla 開発者ネットワーク
これにより、次のことが簡単にできます。
CSS.supports('color', 'var(--fake-var)');
この結果はtrue
、ブラウザーが CSS 変数をサポートしているか、サポートしfalse
ていないかによって決まります。
(それはうまくいくと思うかもしれませんがCSS.supports('--fake-var', 0)
、この回答のコメントに記載されているように、Safari にはバグがあり、失敗するようです。)
純粋な JavaScript の例
CSS.supports
Firefox では、上記の呼び出しが を返すため、このコード スニペットは緑色の背景を生成しますtrue
。CSS 変数をサポートしていないブラウザーでは、背景は赤になります。
var body = document.getElementsByTagName('body')[0];
if (window.CSS && CSS.supports('color', 'var(--fake-var)')) {
body.style.background = 'green';
} else {
body.style.background = 'red';
}
ここでは、window.CSS
存在するかどうかを確認するチェックも追加したことに注意してください。これにより、この JavaScript 実装をサポートしていないブラウザーでエラーがスローされるのを防ぎfalse
、同様に処理します。( global の導入CSS.supports
と同時に導入されたCSS
ため、こちらも確認する必要はありません。)
browserCanUseCssVariables()
関数の作成
あなたの場合、browserCanUseCssVariables()
同じロジックを実行するだけで関数を作成できます。以下のスニペットは、サポートに応じてtrue
または のいずれかを警告します。false
function browserCanUseCssVariables() {
return window.CSS && CSS.supports('color', 'var(--fake-var)');
}
if (browserCanUseCssVariables()) {
alert('Your browser supports CSS Variables!');
} else {
alert('Your browser does not support CSS Variables and/or CSS.supports. :-(');
}
結果 (すべて Windows でのみテスト済み)
Firefox v31
クローム v38
インターネット エクスプローラー 11