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

785 ワード

今日はコードを書く時に間違えやすいところを見つけました.変数を宣言するとき、異なる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で判断した方が良いです.

   var sLeft = window.screenLeft; 
  
if( !window.hasOwnProperty('screenLeft')) sLeft = window.screenX;