ガレコレ [Garage Collection]
2018年5月20日(日)
[JavaScript] タップイベント #HTML5&CSS3&JavaScript
 スマホかパスコンか判別するときに、JavaScriptにせよPHPにせよ、ブラウザのエージェントで判別していました。当面は問題無いのですが、漏れが生じる可能性があります。

 そこで『タップイベント』が利用できるかどうかで、判別した方が合理的です。下記は、ページ読み込み完了後、デバイス判定するJavaScriptです。

--
if(window.addEventListener){
  window.addEventListener('load',_init,false);
  
}else if(window.attachEvent){
  window.attachEvent('onload',_init);
}

function _init(){
  if("ontouchstart" in window){
    $device = 'mobile';
  }else{
    $device = 'pc';
  }
  alert($device);
}    
--

 自分なんかは、window.onload = function(){内容}が簡単で好きです。

 window.onload は、複数あると上書きされるため、最後の1つだけが作動します。しかし、addEventListenerとattachEventは起動時の関数を複数動作させられるという利点があります。

 IE11とOperaは、addEventListenerはダメで、attachEventなんです。

 なお、この判定だと、タブレットはパソコンではなくスマホと同じとなります。


 また、タブレットやスマホでは、onclickでは動作が鈍いそうです。下記の記述で、デバイスによりtouchstartかclickを使い分けできます。

--
var $tap = window.ontouchstart===null?"touchstart":"click";
 
var $target = document.getElementById("id");
$target.addEventListener($tap,function(){内容}, false);    
--
 
お問い合わせ


by Network Communication Note