infoMore than 5 years have passed since last update.
Cordova tips 集
Last updated at Posted at 2016-07-22
1 / 19
Cordovaとは
- HTML5, CSS3, and JavaScript for cross-platform development
- standards-compliant API bindings to access each device's capabilities such as sensors, data, network status
理想と現実
- 理想
- 現実
- Write once, debug everywhere (Java)
- Write about once, debug everywhere, test everywhere (← New)
今日は現実の話をします。
- ユーザにとっての比較対象はNativeアプリ
- Webアプリではない
- 素直に書くだけではダメなとこもある
- Nativeアプリと戦うためのtips
- タッチ, スクロール, キーボード, バックボタン
- ...
タッチ
click イベント遅い問題
- clickイベントは発火するまで少しラグがある
- touchstart -> touchmove -> touchend -- 300ms -> click
- よし、touchendを使おう
- でも....
touchend色々発火しすぎ問題
- スクロールした後でも発火する
- そもそも要素外で指を離しても発火する!?
最終的にこうなりました
- touchstartでスクロール位置を覚えておいて、touchendで変わってないかチェック
- touchendでタッチ位置上の要素とe.targetが同じかチェック
- e.touches じゃなくて e.changedTouches を使う
- タッチ位置上の要素: document.elementFromPoint()
慣性スクロール
慣性スクロール
- スマホといえばこれ。
- Androidは何もしなくてもそれなりになっている
- 問題はiOS
- -webkit-overflow-scrolling: touch;
- レイアウトによっては、崩れるので要確認
- 部分スクロールは癖あり
慣性スクロール+部分スクロール
- 具体例:リストビューの上にダイアログを表示。どちらもスクロール可の場合
- 慣性スクロールが優先的に実行される。
- すでに完成スクロールが発生しているか
- event.preventDefault()が呼ばれているか
キーボード
HTMLとキーボード
- HTMLからはキーボードのVisibilityは取れない
- フォーカスが当たったら自動的に表示
- キーボードの閉じるボタンを押してもフォーカスは当たったまま
- plugin を使う
- 公式のpluginはメンテされていない
- cjpearson/cordova-plugin-keyboard
キーボードとwindow
- Keyboard.shrinkView(Bool);
- キーボードが出てきた時にwindowをリサイズするかどうか
- position: fixed; と相性悪し
キーボードのイベント
- Keyboardのvisibilityの変更のイベントのハンドリング
- window.addEventListener('keyboardDidShow', () => {});
- WillShow, DidShow, WillHide, DidHide, HeightWillChangeとか色々ある
- Androidはwindowのresizeイベントを使った
バックボタン
バックボタン
- 基本はhistory.backが割り当てられている
- ルーティングライブラリ使ってれば基本は問題ないはず
- 複雑なことをやろうすると辛い
- 例:確認ダイアログ・無効化
- 連打とか考えると目眩がしてくる
バックボタンの挙動を変える
- デフォルトの挙動をオーバーライド
- document.addEventListener('backbutton', function() {});
- クセあり
- イベントを登録した時点でデフォルトの挙動をしなくなる
- documentにしか飛んでこない→e.stopPropagation()使えない
いいところもあるよ
- HTML5, CSS3使いたい放題
- box-sizing神
- calc とかflex boxとか超便利
- Androidではcrosswalkを使いましょう
- WebViewがchromium ベースじゃない頃のAndroid webViewは魔境です。
Register as a new user and use Qiita more conveniently
- You get articles that match your needs
- You can efficiently read back useful information
- You can use dark theme
What you can do with signing up