SlideShare a Scribd company logo
1 of 16
Download to read offline
okayama-js


スマートフォン対応、
    気をつけたいトラブル
         ∼ JavaScript編 ∼



                若松 浩昭(株式会社ジークス)
自己紹介

若松 浩昭(Hiroaki Wakamatsu)

・Webサイトの設計
・フロントエンド周りの実装
・スマートフォン案件が主体

・HTML5-WEST.jpコアメンバー

Twitter : azuyuu
ブログ : bit.ly/NFATf4
                           2
Chapter 1

このセッションについて
セッションの内容

8/18 の
『CSS Nite in OSAKA, Vol.32 』
で発表した内容に、JavaScriptの話を
追加しました


    8/18のスライド: http://slidesha.re/QyICih




                                       4
Chapter 2

知っておこう2:JavaScriptに関するトラブルの例
1. 傾き時の画面サイズ取得

•   Androidでは、orientationchange
    イベント時に検知できる値がズレる

window.onorientationchange = function() {
  alert("W: " + window.innerWidth + ", H: " + window.innerHeight);
}




                               横に傾けたにも関わらず、縦向け時の
                               幅と高さを取得している・・・



                                                                     6
1. 傾き時の画面サイズ取得
ー 対処方法の例(1)ー


•   タイマーを使って、画面サイズ取得の
    タイミングを少しだけ遅延させる
 window.onorientationchange = function() {
   setTimeout(function() {
      alert("W: " + window.innerWidth + ", H: " + window.innerHeight);
   }, 200);
 }


                                     横に傾けた時、正常に横向け時の
                                     幅と高さが取得できている

                                     ただし、端末によってはうまく取得できな
                                     い場合がある(Galaxy S Ⅲとか・・・)
                                                                         7
1. 傾き時の画面サイズ取得
ー 対処方法の例(2)ー


•   orientationchangeイベントの代わりに
    resizeイベントを使う


                       ただし、画面をスクロー
                       ルした時や、キーパッド
                       を表示した時にも、
                       resizeイベントが発生し
                       てしまうので注意




                                    8
2. キーイベント

•   Androidは、keyupなどのイベントが
    うまく発生しない

•   しかも、機種ごとに動作が異なったりする

$("textarea").on("keyup", function(e) {
   var len = $("textarea").val().length;
}




                                           9
2. キーイベント
ー 現象の例 ー




                     最初の一文字や、途中に「確定」を
                     タップした時だけイベントが発生、途
日本語入力の場合だけ、イベントが発    中は英数字入力であってもイベントは
生しない                 発生しない


     Galasy S Ⅱの場合      Galaxy S Ⅲの場合


結局、Androidでの実装は諦めました・・・


                                         10
3. スワイプ処理

•   Androidは、画面スクロールが発生すると、
    touchmoveやtouchendを見失う




                    画面スクロール中は、touchmoveで
                    座標が取得できない・・・


    iPhoneの場合(正常)      Galaxy S Ⅲの場合

                                           11
3. スワイプ処理
ー 対処方法の例(1) ー


•   touchmove時に、e.preventDefault()を
    実行

 $("E").on("touchstart", function(e) {
     // event...
 }).on("touchend", function(e) {
     // event...
 }).on("touchmove", function(e) {
     // event...
     e.preventDefault();
 });



                                         12
3. スワイプ処理
ー 対処方法の例(2)ー


•   ただし、縦方向にスクロールしなくなるの
    で・・・




                          13
3. スワイプ処理
ー 対処方法の例(3) ー


•   e.preventDefault() に実行条件を付ける

 $("E").on("touchstart", function(e) {
     Y1 = e.originalEvent.touches[0].clientY;
 }).on("touchend", function(e) {
     // event...
 }).on("touchmove", function(e) {
     Y2 = e.originalEvent.touches[0].clientY;
     if (Math.abs(Y1 - Y2) < 5) {
         e.preventDefault();
     }
 });


                                                14
3. スワイプ処理
ー 対処方法の例(4)ー


•   縦方向の移動が特定値以下の場合だけ、
    e.preventDefault() を実行




            縦スクロール時は座標は取得せず、
            縦スクロールが発生しない(横方向のタッチ移動
            の)時だけ座標の取得ができるようになる


                                     15
okayama-js


スマートフォン対応、気をつけたいトラブル

             ∼ JavaScript編 ∼


                       若松 浩昭(株式会社ジークス)
                                 @azuyuu

More Related Content

What's hot

Androidプログラミング初心者のためのゲームアプリ開発入門
Androidプログラミング初心者のためのゲームアプリ開発入門Androidプログラミング初心者のためのゲームアプリ開発入門
Androidプログラミング初心者のためのゲームアプリ開発入門Masahiko Mizuta
 
Flashup 12 Basic Training of Away3D
Flashup 12 Basic Training of Away3DFlashup 12 Basic Training of Away3D
Flashup 12 Basic Training of Away3DKatsushi Suzuki
 
GUI アプリケーションにおける MVC
GUI アプリケーションにおける MVCGUI アプリケーションにおける MVC
GUI アプリケーションにおける MVCYu Nobuoka
 
Flashup14 Away3d basic material setting
Flashup14 Away3d basic material settingFlashup14 Away3d basic material setting
Flashup14 Away3d basic material settingKatsushi Suzuki
 
Flashup13 Basic Training of Flare3D
Flashup13 Basic Training of Flare3DFlashup13 Basic Training of Flare3D
Flashup13 Basic Training of Flare3DKatsushi Suzuki
 
知らないと損するアプリ開発におけるStateMachineの活用法(full版)
知らないと損するアプリ開発におけるStateMachineの活用法(full版)知らないと損するアプリ開発におけるStateMachineの活用法(full版)
知らないと損するアプリ開発におけるStateMachineの活用法(full版)Ken Morishita
 
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法Hiroshi Yoshida
 
Prism + ReactiveProperty入門
Prism + ReactiveProperty入門Prism + ReactiveProperty入門
Prism + ReactiveProperty入門一希 大田
 

What's hot (8)

Androidプログラミング初心者のためのゲームアプリ開発入門
Androidプログラミング初心者のためのゲームアプリ開発入門Androidプログラミング初心者のためのゲームアプリ開発入門
Androidプログラミング初心者のためのゲームアプリ開発入門
 
Flashup 12 Basic Training of Away3D
Flashup 12 Basic Training of Away3DFlashup 12 Basic Training of Away3D
Flashup 12 Basic Training of Away3D
 
GUI アプリケーションにおける MVC
GUI アプリケーションにおける MVCGUI アプリケーションにおける MVC
GUI アプリケーションにおける MVC
 
Flashup14 Away3d basic material setting
Flashup14 Away3d basic material settingFlashup14 Away3d basic material setting
Flashup14 Away3d basic material setting
 
Flashup13 Basic Training of Flare3D
Flashup13 Basic Training of Flare3DFlashup13 Basic Training of Flare3D
Flashup13 Basic Training of Flare3D
 
知らないと損するアプリ開発におけるStateMachineの活用法(full版)
知らないと損するアプリ開発におけるStateMachineの活用法(full版)知らないと損するアプリ開発におけるStateMachineの活用法(full版)
知らないと損するアプリ開発におけるStateMachineの活用法(full版)
 
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法
 
Prism + ReactiveProperty入門
Prism + ReactiveProperty入門Prism + ReactiveProperty入門
Prism + ReactiveProperty入門
 

Viewers also liked

フラッシャーはこれからどうしたらいいのか。
フラッシャーはこれからどうしたらいいのか。フラッシャーはこれからどうしたらいいのか。
フラッシャーはこれからどうしたらいいのか。Shuichi Takaya
 
Androidハイブリッドアプリを約2年間メンテンナンスしてきて分ったこと
Androidハイブリッドアプリを約2年間メンテンナンスしてきて分ったことAndroidハイブリッドアプリを約2年間メンテンナンスしてきて分ったこと
Androidハイブリッドアプリを約2年間メンテンナンスしてきて分ったことShuichi Takaya
 
WordPress基礎講座1 CMSの概要
WordPress基礎講座1 CMSの概要WordPress基礎講座1 CMSの概要
WordPress基礎講座1 CMSの概要Akinori Kawamitsu
 
CSSコーディングを効率よくするおすすめプラグイン
CSSコーディングを効率よくするおすすめプラグインCSSコーディングを効率よくするおすすめプラグイン
CSSコーディングを効率よくするおすすめプラグインShogo Tamura
 
レスポンシブWeb「デザイン」
レスポンシブWeb「デザイン」レスポンシブWeb「デザイン」
レスポンシブWeb「デザイン」uenoyuuki
 
jQuery Mobile 最新情報 & Tips
jQuery Mobile 最新情報 & TipsjQuery Mobile 最新情報 & Tips
jQuery Mobile 最新情報 & Tipsyoshikawa_t
 
マークアップとUX
マークアップとUXマークアップとUX
マークアップとUXuenoyuuki
 
Awsをちゃんと使ってみた
Awsをちゃんと使ってみたAwsをちゃんと使ってみた
Awsをちゃんと使ってみたYoichi Toyota
 
Pythonを取り巻く開発環境 #pyconjp
Pythonを取り巻く開発環境 #pyconjpPythonを取り巻く開発環境 #pyconjp
Pythonを取り巻く開発環境 #pyconjpYoshifumi Yamaguchi
 
WordPress テーマ Habakiri と公式ディレクトリへのテーマ登録
WordPress テーマ Habakiri と公式ディレクトリへのテーマ登録WordPress テーマ Habakiri と公式ディレクトリへのテーマ登録
WordPress テーマ Habakiri と公式ディレクトリへのテーマ登録タカシ キタジマ
 
マルチデバイス時代におけるWebサイトのUIについて
マルチデバイス時代におけるWebサイトのUIについてマルチデバイス時代におけるWebサイトのUIについて
マルチデバイス時代におけるWebサイトのUIについてrie nabesaka
 
Javascriptを書きたくないヒ トのためのPythonScript
Javascriptを書きたくないヒ トのためのPythonScriptJavascriptを書きたくないヒ トのためのPythonScript
Javascriptを書きたくないヒ トのためのPythonScriptKazufumi Ohkawa
 
レスポンシブ基礎 ~Webサイトをレスポンシブに する方法とそのメリット~
レスポンシブ基礎 ~Webサイトをレスポンシブに する方法とそのメリット~レスポンシブ基礎 ~Webサイトをレスポンシブに する方法とそのメリット~
レスポンシブ基礎 ~Webサイトをレスポンシブに する方法とそのメリット~Horiguchi Seito
 
使いやすいWordPressのためのCSSのつくりかた
使いやすいWordPressのためのCSSのつくりかた使いやすいWordPressのためのCSSのつくりかた
使いやすいWordPressのためのCSSのつくりかたHiroshi Urabe
 
なぜ科学計算にはPythonか?
なぜ科学計算にはPythonか?なぜ科学計算にはPythonか?
なぜ科学計算にはPythonか?Aki Ariga
 
Pythonの開発環境を調べてみた
Pythonの開発環境を調べてみたPythonの開発環境を調べてみた
Pythonの開発環境を調べてみたKenji NAKAGAKI
 
NumPyが物足りない人へのCython入門
NumPyが物足りない人へのCython入門NumPyが物足りない人へのCython入門
NumPyが物足りない人へのCython入門Shiqiao Du
 
ソフトシンセを作りながら学ぶPythonプログラミング
ソフトシンセを作りながら学ぶPythonプログラミングソフトシンセを作りながら学ぶPythonプログラミング
ソフトシンセを作りながら学ぶPythonプログラミングRansui Iso
 

Viewers also liked (20)

フラッシャーはこれからどうしたらいいのか。
フラッシャーはこれからどうしたらいいのか。フラッシャーはこれからどうしたらいいのか。
フラッシャーはこれからどうしたらいいのか。
 
Androidハイブリッドアプリを約2年間メンテンナンスしてきて分ったこと
Androidハイブリッドアプリを約2年間メンテンナンスしてきて分ったことAndroidハイブリッドアプリを約2年間メンテンナンスしてきて分ったこと
Androidハイブリッドアプリを約2年間メンテンナンスしてきて分ったこと
 
WordPress基礎講座1 CMSの概要
WordPress基礎講座1 CMSの概要WordPress基礎講座1 CMSの概要
WordPress基礎講座1 CMSの概要
 
AWS基礎
AWS基礎AWS基礎
AWS基礎
 
CSSコーディングを効率よくするおすすめプラグイン
CSSコーディングを効率よくするおすすめプラグインCSSコーディングを効率よくするおすすめプラグイン
CSSコーディングを効率よくするおすすめプラグイン
 
レスポンシブWeb「デザイン」
レスポンシブWeb「デザイン」レスポンシブWeb「デザイン」
レスポンシブWeb「デザイン」
 
jQuery Mobile 最新情報 & Tips
jQuery Mobile 最新情報 & TipsjQuery Mobile 最新情報 & Tips
jQuery Mobile 最新情報 & Tips
 
マークアップとUX
マークアップとUXマークアップとUX
マークアップとUX
 
Awsをちゃんと使ってみた
Awsをちゃんと使ってみたAwsをちゃんと使ってみた
Awsをちゃんと使ってみた
 
Pythonを取り巻く開発環境 #pyconjp
Pythonを取り巻く開発環境 #pyconjpPythonを取り巻く開発環境 #pyconjp
Pythonを取り巻く開発環境 #pyconjp
 
WordPress テーマ Habakiri と公式ディレクトリへのテーマ登録
WordPress テーマ Habakiri と公式ディレクトリへのテーマ登録WordPress テーマ Habakiri と公式ディレクトリへのテーマ登録
WordPress テーマ Habakiri と公式ディレクトリへのテーマ登録
 
マルチデバイス時代におけるWebサイトのUIについて
マルチデバイス時代におけるWebサイトのUIについてマルチデバイス時代におけるWebサイトのUIについて
マルチデバイス時代におけるWebサイトのUIについて
 
Javascriptを書きたくないヒ トのためのPythonScript
Javascriptを書きたくないヒ トのためのPythonScriptJavascriptを書きたくないヒ トのためのPythonScript
Javascriptを書きたくないヒ トのためのPythonScript
 
レスポンシブ基礎 ~Webサイトをレスポンシブに する方法とそのメリット~
レスポンシブ基礎 ~Webサイトをレスポンシブに する方法とそのメリット~レスポンシブ基礎 ~Webサイトをレスポンシブに する方法とそのメリット~
レスポンシブ基礎 ~Webサイトをレスポンシブに する方法とそのメリット~
 
使いやすいWordPressのためのCSSのつくりかた
使いやすいWordPressのためのCSSのつくりかた使いやすいWordPressのためのCSSのつくりかた
使いやすいWordPressのためのCSSのつくりかた
 
CSS の歩き方
CSS の歩き方CSS の歩き方
CSS の歩き方
 
なぜ科学計算にはPythonか?
なぜ科学計算にはPythonか?なぜ科学計算にはPythonか?
なぜ科学計算にはPythonか?
 
Pythonの開発環境を調べてみた
Pythonの開発環境を調べてみたPythonの開発環境を調べてみた
Pythonの開発環境を調べてみた
 
NumPyが物足りない人へのCython入門
NumPyが物足りない人へのCython入門NumPyが物足りない人へのCython入門
NumPyが物足りない人へのCython入門
 
ソフトシンセを作りながら学ぶPythonプログラミング
ソフトシンセを作りながら学ぶPythonプログラミングソフトシンセを作りながら学ぶPythonプログラミング
ソフトシンセを作りながら学ぶPythonプログラミング
 

Similar to スマートフォン対応、気をつけたいトラブル JavaScript編

レスポンシブWebデザイン【発展編】
レスポンシブWebデザイン【発展編】レスポンシブWebデザイン【発展編】
レスポンシブWebデザイン【発展編】Yasuhito Yabe
 
DOMイベントの基礎から深淵まで
DOMイベントの基礎から深淵までDOMイベントの基礎から深淵まで
DOMイベントの基礎から深淵までMasayuki Nakano
 
Tokyo GTUG Bootcamp2010
Tokyo GTUG Bootcamp2010Tokyo GTUG Bootcamp2010
Tokyo GTUG Bootcamp2010Takashi EGAWA
 
Android OpenGL HandsOn
Android OpenGL HandsOnAndroid OpenGL HandsOn
Android OpenGL HandsOnIkuo Tansho
 
JavaFXでマルチタッチプログラミング
JavaFXでマルチタッチプログラミングJavaFXでマルチタッチプログラミング
JavaFXでマルチタッチプログラミングTakashi Aoe
 
Silverlightで作るマルチタッチアプリケーション 2
Silverlightで作るマルチタッチアプリケーション 2Silverlightで作るマルチタッチアプリケーション 2
Silverlightで作るマルチタッチアプリケーション 2Yoshitaka Seo
 
スマートフォン勉強会関西#16(iOS,Android,WP7マルチタッチ)
スマートフォン勉強会関西#16(iOS,Android,WP7マルチタッチ)スマートフォン勉強会関西#16(iOS,Android,WP7マルチタッチ)
スマートフォン勉強会関西#16(iOS,Android,WP7マルチタッチ)Tomonori Ohba
 
Flutterでscroll viewとexpandedを併用してsign in sign up画面 などの レイアウトを作成する
Flutterでscroll viewとexpandedを併用してsign in sign up画面 などの レイアウトを作成するFlutterでscroll viewとexpandedを併用してsign in sign up画面 などの レイアウトを作成する
Flutterでscroll viewとexpandedを併用してsign in sign up画面 などの レイアウトを作成するIgaHironobu
 
Silverlight Line-Of-Business Applications
Silverlight Line-Of-Business ApplicationsSilverlight Line-Of-Business Applications
Silverlight Line-Of-Business ApplicationsYuya Yamaki
 
HTML5でスマートフォン開発の理想と現実
HTML5でスマートフォン開発の理想と現実HTML5でスマートフォン開発の理想と現実
HTML5でスマートフォン開発の理想と現実Takumi Ohashi
 
Core Animation 使って見た
Core Animation 使って見たCore Animation 使って見た
Core Animation 使って見たOCHI Shuji
 
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGLMedia Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGLAtsushi Tadokoro
 
モデルベース要件定義 at BPStudy
モデルベース要件定義 at BPStudyモデルベース要件定義 at BPStudy
モデルベース要件定義 at BPStudyZenji Kanzaki
 
jQuery MobileとPhoneGapでスマートフォンアプリ楽々クッキング
 jQuery MobileとPhoneGapでスマートフォンアプリ楽々クッキング jQuery MobileとPhoneGapでスマートフォンアプリ楽々クッキング
jQuery MobileとPhoneGapでスマートフォンアプリ楽々クッキングTakashi Okamoto
 
GREE Creators' Meetup #2 session B Manryo
GREE Creators' Meetup #2 session B ManryoGREE Creators' Meetup #2 session B Manryo
GREE Creators' Meetup #2 session B ManryoShiho Manryo
 
3DCG(3Dコンピュータグラフィック)をWebGLで始めよう
3DCG(3Dコンピュータグラフィック)をWebGLで始めよう3DCG(3Dコンピュータグラフィック)をWebGLで始めよう
3DCG(3Dコンピュータグラフィック)をWebGLで始めようAdvancedTechNight
 

Similar to スマートフォン対応、気をつけたいトラブル JavaScript編 (20)

Android gameprogramming
Android gameprogrammingAndroid gameprogramming
Android gameprogramming
 
レスポンシブWebデザイン【発展編】
レスポンシブWebデザイン【発展編】レスポンシブWebデザイン【発展編】
レスポンシブWebデザイン【発展編】
 
DOMイベントの基礎から深淵まで
DOMイベントの基礎から深淵までDOMイベントの基礎から深淵まで
DOMイベントの基礎から深淵まで
 
Tokyo GTUG Bootcamp2010
Tokyo GTUG Bootcamp2010Tokyo GTUG Bootcamp2010
Tokyo GTUG Bootcamp2010
 
OpenGL 3DCG
OpenGL 3DCGOpenGL 3DCG
OpenGL 3DCG
 
Android OpenGL HandsOn
Android OpenGL HandsOnAndroid OpenGL HandsOn
Android OpenGL HandsOn
 
Swift Study Vol.4
Swift Study Vol.4Swift Study Vol.4
Swift Study Vol.4
 
JavaFXでマルチタッチプログラミング
JavaFXでマルチタッチプログラミングJavaFXでマルチタッチプログラミング
JavaFXでマルチタッチプログラミング
 
Silverlightで作るマルチタッチアプリケーション 2
Silverlightで作るマルチタッチアプリケーション 2Silverlightで作るマルチタッチアプリケーション 2
Silverlightで作るマルチタッチアプリケーション 2
 
スマートフォン勉強会関西#16(iOS,Android,WP7マルチタッチ)
スマートフォン勉強会関西#16(iOS,Android,WP7マルチタッチ)スマートフォン勉強会関西#16(iOS,Android,WP7マルチタッチ)
スマートフォン勉強会関西#16(iOS,Android,WP7マルチタッチ)
 
Flutterでscroll viewとexpandedを併用してsign in sign up画面 などの レイアウトを作成する
Flutterでscroll viewとexpandedを併用してsign in sign up画面 などの レイアウトを作成するFlutterでscroll viewとexpandedを併用してsign in sign up画面 などの レイアウトを作成する
Flutterでscroll viewとexpandedを併用してsign in sign up画面 などの レイアウトを作成する
 
Silverlight Line-Of-Business Applications
Silverlight Line-Of-Business ApplicationsSilverlight Line-Of-Business Applications
Silverlight Line-Of-Business Applications
 
HTML5でスマートフォン開発の理想と現実
HTML5でスマートフォン開発の理想と現実HTML5でスマートフォン開発の理想と現実
HTML5でスマートフォン開発の理想と現実
 
Core Animation 使って見た
Core Animation 使って見たCore Animation 使って見た
Core Animation 使って見た
 
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGLMedia Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
 
モデルベース要件定義 at BPStudy
モデルベース要件定義 at BPStudyモデルベース要件定義 at BPStudy
モデルベース要件定義 at BPStudy
 
Jqm20120804 publish
Jqm20120804 publishJqm20120804 publish
Jqm20120804 publish
 
jQuery MobileとPhoneGapでスマートフォンアプリ楽々クッキング
 jQuery MobileとPhoneGapでスマートフォンアプリ楽々クッキング jQuery MobileとPhoneGapでスマートフォンアプリ楽々クッキング
jQuery MobileとPhoneGapでスマートフォンアプリ楽々クッキング
 
GREE Creators' Meetup #2 session B Manryo
GREE Creators' Meetup #2 session B ManryoGREE Creators' Meetup #2 session B Manryo
GREE Creators' Meetup #2 session B Manryo
 
3DCG(3Dコンピュータグラフィック)をWebGLで始めよう
3DCG(3Dコンピュータグラフィック)をWebGLで始めよう3DCG(3Dコンピュータグラフィック)をWebGLで始めよう
3DCG(3Dコンピュータグラフィック)をWebGLで始めよう
 

スマートフォン対応、気をつけたいトラブル JavaScript編