3

曜日に応じて画像をレンダリングするこのコードがあります。ただし、IE6 以下、およびおそらく他の一部のブラウザーでは、png の不透明度がレンダリングされません。そのため、アルファ透明度をレンダリングしないブラウザを検出し、代わりにこの画像「img/horarios2.png」をロードするように指示するように、少し変更したいと思います。レンダリングしないことが知られているIE6以下を除外するように作成しようとしましたが、おそらくレンダリングしない他のすべてのブラウザについて考え、それらを支配する何かが必要でした.アウトも。これを達成するための最良の方法がわからないので、すべての提案を受け入れます。

$(document).ready (function horario () {
var date = new Date();
var weekday = (date.getDay());

if (weekday==0)
    document.getElementById('horarios').src = "img/domingo.png";
else if (weekday==4)
    document.getElementById('horarios').src = "img/quinta.png";
else if (weekday==5)
    document.getElementById('horarios').src = "img/sexta.png";
else if (weekday==6)
    document.getElementById('horarios').src = "img/sabado.png";
else 
    document.getElementById('horarios').src = "img/quarta.png";
});
4

4 に答える 4

3

この問題についてかなりの量の調査を行った結果、JavaScript で機能テストを作成するのは現実的ではないという結論に達しました。また、IE 6 は PNG 透過性をサポートしていない唯一のブラウザーであり、真剣に使用されているという結論に達しました。その場合、Gabriel Ross が推奨する条件付きコメントが最善の策です。純粋な JavaScript で条件付きコメントを使用することは可能です。

var div = document.createElement("div");
div.innerHTML = "<!--[if lte IE 6]><i></i><![endif]-->";
var isIe6orLower = (div.getElementsByTagName("i").length == 1);

alert("Is IE 6 or lower: " + isIe6orLower);

2012 年 6 月 17 日更新

IE 10は条件付きコメントをサポートしないことに注意してください。したがって、このアプローチは IE の将来のバージョンでは機能しません。

于 2011-08-10T23:32:01.080 に答える
2

条件付きコメント:

<!--[if IE 6]>
<script>
var ie6 = true;
</script>
<![endif]-->
于 2011-08-10T18:42:12.663 に答える
1

PNG の透過性がサポートされているかどうかを検出する、一般的な良い方法はないと思います。ただし、IE6 とごくまれに IE5.5 を除いて、すべての主要なブラウザーが現在サポートしています。他のケースについては、合理的に心配する必要はないと思います。

var badBrowser = (/MSIE ((5\.5)|6)/.test(navigator.userAgent) && navigator.platform == "Win32");

if( badBrowser ) {
    // change to "img/horarios2.png"
}

ここから撮影。

于 2011-08-10T18:43:30.737 に答える
0

IE6 は、非標準の css フィルターを介して png 透明度をレンダリングできます。このフィルターは、IE に代わって透明度を処理するために directX を呼び出します。

他のブラウザに関しては、IE だけが愚かで、部分的な PNG サポートしか追加できませんでした。ブラウザーが png をサポートしている場合は、透明性も処理していると想定できます (IE の場合を除く)。

于 2011-08-10T18:42:35.203 に答える