• ベストアンサー
  • 困ってます

jQuery bind時のeventについて

  • 質問No.7544829
  • 閲覧数714
  • ありがとう数1
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 100% (2/2)

お世話になっております。
当方JavaScriptは不慣れなため、的外れな質問になってしまうかもしれませんが、その際はご指摘を頂けるとありがたいです。

スマートフォン向けのWebページを作成するにあたり、jQueryを用いてタッチイベントを取得しようと考えています。
以下に簡略化したソースを掲載致します。
/*--------------------------------------------*/
<script type="text/javascript">
$(function(){
$('#id').bind('touchstart',function(e) {
alert(event);
});
});
</script>
/*--------------------------------------------*/

この際、Android版Opera上で表示されたのは、「object TouchEvent」でした。
その後主要なブラウザで動作確認をしていたところ、Android版FireFoxでは動作しないことが判明しました。
調べたところ、Gecko系のブラウザではwindow.eventという属性は存在せず、引数であるeに格納されているとのことだったので、alert(e);として確認したところ、表示されたのは「object Object」でした。
本来であればevent.changedTouches[0].pageX等の値を取得したいのですが、引数のeが目的とするオブジェクトではないようなので、値を取得できません。

1. そもそもこのeventは、window.eventという認識で良いのでしょうか?
2. FireFoxでwindow.eventに該当するオブジェクトを取得するにはどういった手順が必要なのでしょうか?

以上2点、ご教授頂けると幸いです。

質問者が選んだベストアンサー

  • 回答No.1
  • ベストアンサー

ベストアンサー率 61% (1594/2576)

スマートフォンはまったく知らないので、推測だけですが…


多分、eにイベントオブジェクトが返されているのではないかと推測します。
(必ずしも、window.eventと同じではありません。)

試しに、alert(e.type); などとして確認してみてください。
それでもわからない場合は、for(i in e)などでeの属性を調べてみてはいかがでしょうか?


イベントオブジェクト
https://developer.mozilla.org/ja/DOM/event
お礼コメント
Zanggy

お礼率 100% (2/2)

ご回答ありがとうございます。
ご指摘の通りe.typeにはTouchStartが格納されていましたが、結果的にこのオブジェクトから目的とするTouchEventオブジェクトを得る方法がわかりませんでした。
その後試行錯誤したところ、arguments内に目的とするTouchEventオブジェクトが格納されていることがわかり、目的は達成されたものの、結局eとeventの関係性はわかりませんでした。

個人的な事情からお礼が遅れてしまったので、ここで一度締め切らせて頂きます。
お付き合い頂きありがとうございました。
投稿日時:2012/06/25 14:37
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
関連するQ&A

ピックアップ

ページ先頭へ