変数を直接定義すると機能します。次のコードのように、body の背景色は IE では薄緑、IE 以外のブラウザでは水色になります。
<html>
<body>
<script>
if (window.attachEvent) {
var YourBrowserIsIE = true;
}
if (YourBrowserIsIE) {
document.body.style.backgroundColor = 'lightgreen';
}
else {
document.body.style.backgroundColor = 'lightblue';
}
</script>
</body>
</html>
ただし、次のように eval() を使用して変数を定義する必要がある場合もありますが、YourBrowserIsIE
IE 以外のブラウザーでは未定義であるというエラーが結果に表示されます。
if (window.attachEvent) {
eval('var YourBrowserIsIE = true;');
}
はい、var YourBrowserIsIE = false;
IE 以外のブラウザー用に事前定義したり、if ステートメントを に変更したりできることはわかってif (typeof YourBrowserIsIE != 'undefined')
いますが、コードはできるだけ最小限に抑えたいと考えています。
if (YourBrowserIsIE)
eval() を使用して変数を定義し、 IE 以外のブラウザでエラーを表示せずに簡単に変数をチェックするソリューションはありますか?
==編集==
わかりづらくてすみません。上記の eval() を使用する状況は、実際には IE のバージョンを検出するためのものです。次のコードを参照してください。
<html>
<body>
<script>
if (window.attachEvent) {
var version = /msie (\d+)/i.exec(navigator.userAgent)[1];
eval('var YourBrowserIsIE' + version + ' = true;');
}
if (YourBrowserIsIE9) {
document.body.style.backgroundColor = 'lightgreen';
}
else {
document.body.style.backgroundColor = 'lightblue';
}
</script>
</body>
</html>