Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Mobile Web Application 甘苦談
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
othree
October 27, 2013
Technology
1.8k
6
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Mobile Web Application 甘苦談
othree
October 27, 2013
More Decks by othree
See All by othree
How GitHub Supports Vim License Detection, The Five Years Journey
othree
1
2.3k
WAT JavaScript Date
othree
3
2.3k
Modern HTML Email Development
othree
3
2.8k
MRT & GIT
othree
1
2.5k
YAJS.vim and Vim Syntax Highlight
othree
1
3.2k
Web Trends to 2015
othree
4
370
Transducer
othree
9
3.2k
HITCON 11 Photographer
othree
4
560
fetch is the new XHR
othree
6
3.7k
Other Decks in Technology
See All in Technology
AIカンパニーへの転換を支えた、エンジニアの仕事の再定義
kworkdev
PRO
2
1.2k
hackers_champloo_2026_tidb
makocchi
0
160
Metadata - Section 1: HTML Basics
mohab1
0
120
Classmethod Company Deck
satoshi7
1
680
ソフトウェア ファクトリー - 再現性のあるソフトウェアの工場づくり / Software factory
iktakahiro
6
4.9k
オントロジーって 結局なにもの? AI エージェントに「意味」を渡す知識設計の話
greenmidori
0
180
大型犬好きによるPugの紹介
yamanoku
1
160
「事実」を「計測」して、「解釈」する 〜AWS Lambdaのメモリ最適解の見つけ方〜
maimyyym
0
170
AI コーディングと人間の認知スループット / CTO Night & Day 2026 Morning Session / AI Coding and Human Cognitive Throughput
prog893
4
1k
分析の民主化を支えるメタデータ整備の実践
kakehashi
PRO
4
1.4k
分析AIエージェントを育てる、動く環境を育てる
codatum
1
1.1k
10年後、Engineering 行為を剥奪されるとして、わたしたちは、どう、何を創ればいいだろうか。 / If Engineering Is Taken Away in 10 Years, How and What Should We Create?
bitkey
PRO
1
190
Featured
See All Featured
Speed Design
sergeychernyshev
33
2.2k
The Cult of Friendly URLs
andyhume
79
7k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Building the Perfect Custom Keyboard
takai
2
910
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.7k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
Optimising Largest Contentful Paint
csswizardry
37
4k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
480
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.5k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.9k
Building AI with AI
inesmontani
PRO
1
1.3k
Navigating Weather and Climate Data
rabernat
0
560
Transcript
Mobile Web Application ⽢甘苦談 othree @ MOPCON 2013
me • @othree • MozTW member • PhD Candidate of
civil engineering • F2E at HTC • https://blog.othree.net/
• Front End related • Experience sharing • No code
listing
Why Mobile • We are HTC....
Mozilla Summit 2013
Mozilla Summit 2013
PM Says “We are going to support mobile browsers”
What We Thought • Web Standards rule the web •
Not big problem
Reality • Browser have bugs • Standard implementation not the
same • Ambiguous standards • Hard to debug on some browser • Any issue might be new, not like IE
Reality • Browser have bugs • Standard implementation not the
same • Ambiguous standards • Hard to debug on some browser • Any issue might be new, not like IE Survey
What browser you use on smartphone?
What browser you use on smartphone? b) You install browser
by yourself a) Default browser from your phone
Android Browser
Android Browser • No updates anymore • Google use Chrome
as new default • Still exists: HTC, Samsung Galaxy S3
Mozilla Summit 2013
• Have bugs, issues
S4 Chrome?
S4 Chrome?
None
Suggestion to Users • Use Chrome or Firefox or …
So...
So... Issues
Issues • No repaint • Ghost Click • Toggle location
bar will not trigger resize • preventDefault not work on touch event • HTML5 Video
Repaint • To save power, browser will reduce repaint •
It predicts best timing for repaint, what to repaint • Prediction might fail
If Not Repaint • Things will disappear, in wrong position...etc
Force Repaint • Access some attribute related to layout •
ex: offsetHeight
Ghost Click • Mobile device don’t have real ‘click’ event
• Simulate ‘click’ using touch events • ‘click’ has 300ms delay after ‘touchend’
Avoid Lag • Use ‘touchend’ • tap.js https://github.com/alexgibson/tap.js • fastbutton
https://developers.google.com/mobile/ articles/fast_buttons
But.. • Android Browser • Trigger simulated click on wrong
element
Demo
Location Bar • 3 states in Android Browser • show
• hide • pinned
Location Bar • 3 states in Android Browser • show
• hide • pinned
None
None
None
What’s the Deal • Window size changes • Trigger ‘resize’
event? • Android 2: Yes • Android 3: No http://www.quirksmode.org/dom/events/resize_mobile.html
Fix • Time Interval to check window size change •
200ms interval will cause video not play • Manuel trigger resize handler when window size might change
preventDefault • Can used to prevent user scroll web page
• Not work on HTC browser • Not a bug, its spec...
HTML5 Video • Loop not work • Play event not
reliable • Duration update issue • iPhone, iPod have different implementation
Loop • Video loop not work on all mobile browser
• But you can call `play()` on ‘ended’ event
Video Bugs • ‘play’, ‘playing’ event not reliable • Duration
have default value • Won't stop when buffer ready even if `pause()` were called
MOPCON 2013
pause() not work play() download buffer pause() buffer ready, play
playing play
RobustVideo • A video wrapper to fix issues above •
https://github.com/othree/robust-video
iPhone • Open native player to play HTML5 video
iPhone • Open native player to play HTML5 video
None
None
Limitation • Video needs visible to be able to play
• Poster will not used to render in web page • No video event is available
Limitation • Video needs visible to be able to play
• Poster will not used to render in web page • No video event is available
Tip • Video element outside of window • Tap img(poster)
to trigger `video.play()`
Tip • Video element outside of window • Tap img(poster)
to trigger `video.play()` <video> <img>
呼...
Next Time PM Says “We are going to support mobile
browsers”
We Say “Well, it takes x times longer to do
it.”
We Say “Well, it takes x times longer to do
it.” Mobile Debugging How to
Browsers • Safari • Chrome • Firefox/Opera • Android Browser
Safari • Enable Debug • Connect iDevice to your Mac
• Open Safari https://developer.apple.com/library/ios/documentation/AppleApplications/Reference/SafariWebContent/DebuggingSafarioniPhoneContent/DebuggingSafarioniPhoneContent.html
Chrome • Install the ADB Chrome extension • Install driver
of your device • Enable Debug • Connect device to PC/Mac https://developers.google.com/chrome-developer-tools/docs/remote-debugging
None
Firefox • https://hacks.mozilla.org/2012/08/remote- debugging-on-firefox-for-android/
Android Browser • Weinre http://people.apache.org/~pmuellr/weinre/ docs/latest/
None
None
None
None
None
Demo Q
Thanks