みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

jQuery bind時のeventについて

お世話になっております。
当方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点、ご教授頂けると幸いです。

投稿日時 - 2012-06-20 17:21:57

QNo.7544829

困ってます

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

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


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

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


イベントオブジェクト
https://developer.mozilla.org/ja/DOM/event

投稿日時 - 2012-06-20 18:30:42

お礼

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

個人的な事情からお礼が遅れてしまったので、ここで一度締め切らせて頂きます。
お付き合い頂きありがとうございました。

投稿日時 - 2012-06-25 14:37:48

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問