javascriptブラウザを跨ぐ属性判断方法


今日はコードを書く時に間違えやすいところを見つけました。変数を宣言するときは、しばしば異なるbrowserによってAPI定義があり、次にどの属性を使うべきかを判断するために、例えば
var fullscreenElement = document.mozFullScreenElement || document.webkitFullscreenElement || document.fullscreenElement;
によって、どのatributeを使うべきかを確認するために、次のような書き方をする。ただし、javascriptの値が条件である場合の判断には注意してください。例えば、
var sLeft = window.screenLeft || window.screenX; //firefox use screenX
console.log(sLeft);
このコードはscreenLeftがwindow.screenLeftを返送することを望んでいますが、firefoxでwindow.screenXを返送します。しかし、screenLeftがちょうど0に待っている時は、12464;後の条件に入ります。続けてggです。
このため、値の判断は正統であるかどうかはハスOwnProptyまたはtypeofで判断したほうが良いと提案しています。