Siêu thị PDFTải ngay đi em, trời tối mất

Thư viện tri thức trực tuyến

Kho tài liệu với 50,000+ tài liệu học thuật

© 2023 Siêu thị PDF - Kho tài liệu học thuật hàng đầu Việt Nam

html5 iphone web application development
PREMIUM
Số trang
338
Kích thước
22.9 MB
Định dạng
PDF
Lượt xem
957

html5 iphone web application development

Nội dung xem thử

Mô tả chi tiết

HTML5 iPhone Web Application

Development

An introduction to web-application development for

mobile within the iOS Safari browser

Alvin Crespo

BIRMINGHAM - MUMBAI

HTML5 iPhone Web Application Development

Copyright © 2013 Packt Publishing

All rights reserved. No part of this book may be reproduced, stored in a retrieval

system, or transmitted in any form or by any means, without the prior written

permission of the publisher, except in the case of brief quotations embedded in

critical articles or reviews.

Every effort has been made in the preparation of this book to ensure the accuracy

of the information presented. However, the information contained in this book is

sold without warranty, either express or implied. Neither the author, nor Packt

Publishing, and its dealers and distributors will be held liable for any damages

caused or alleged to be caused directly or indirectly by this book.

Packt Publishing has endeavored to provide trademark information about all of the

companies and products mentioned in this book by the appropriate use of capitals.

However, Packt Publishing cannot guarantee the accuracy of this information.

First published: May 2013

Production Reference: 1170513

Published by Packt Publishing Ltd.

Livery Place

35 Livery Street

Birmingham B3 2PB, UK.

ISBN 978-1-84969-102-4

www.packtpub.com

Cover Image by Asher Wishkerman ([email protected])

Credits

Author

Alvin Crespo

Reviewers

Dale Cruse

Faraz K. Kelhini

Acquisition Editor

Joanne Fitzpatrick

Lead Technical Editor

Neeshma Ramakrishnan

Technical Editors

Amit Ramadas

Neha Shanbhag

Project Coordinator

Arshad Sopariwala

Proofreaders

Paul Hindle

Chris Smith

Indexer

Rekha Nair

Graphics

Ronak Dhruv

Production Coordinator

Conidon Miranda

Cover Work

Conidon Miranda

About the Author

Alvin Crespo is a creative technologist strongly focused on delivering compelling

user experiences through the use of frontend technologies. Utilizing the latest industry

standards, he strives to move the Web forward promoting open source technologies.

Having worked in startup and agency environments, he has helped build and architect

complex applications for both medium and large-sized companies.

First and foremost, I would like to thank my lovely wife, Janice

Smith, for helping me produce this book. This has only been possible

through the love and support you have given me. To my friends and

family who have been there throughout the process, my love and

endless thanks cannot express how awesome you all are.

About the Reviewers

Dale Cruse is the co-author of HTML5 Multimedia Development Cookbook by Packt

Publishing and the technical editor of several other HTML5 books. He started his

career in 1995 as a U.S. Army photojournalist. Since making the switch to purely

digital at CBSNews.com, he's created web and mobile experiences for some of the

most well-known clients in the world, including 20th Century Fox, Bloomingdale's,

and MINI Cooper. Currently, he juggles being both a senior developer at Allen

& Gerritsen and being a New York Yankees fan in South Boston. An in-demand

speaker, you can't get him to shut up on Twitter at @dalecruse.

Faraz K. Kelhini has more than a decade of software development experience in

a broad range of disciplines. His core expertise and interest lies in web technologies,

including PHP (as well as frameworks like Symfony and Zend framework), Python,

HTML5, CSS3, JavaScript (as well as frameworks like jQuery and MooTools), and

Linux/Unix operating systems. He is a professional consultant, editor, and writer

who specializes in technical presentations, workshops, online content publishing, and

knowledge transfer. Faraz has more than 100 articles to his credit within prominent

publications such as Developer.com, .net magazine, and Smashing Magazine.

When not pursuing a new technology or idea, Faraz loves practicing his DSLR

photography skills. More information on his related writings, presentations,

and useful tools can be found at http://eloux.com.

I would like to thank you, the reader; I hope that you enjoy this book

and produce a fantastic HTML5 iPhone App of your own. I look

forward to hearing your feedback and seeing what you come up

with! My thanks also go to my entire friends and family.

www.PacktPub.com

Support files, eBooks, discount offers

and more

You might want to visit www.PacktPub.com for support files and downloads related to your

book.

Did you know that Packt offers eBook versions of every book published, with PDF and ePub files

available? You can upgrade to the eBook version at www.PacktPub.com and as a print book

customer, you are entitled to a discount on the eBook copy. Get in touch with us at service@

packtpub.com for more details.

At www.PacktPub.com, you can also read a collection of free technical articles, sign up for a range

of free newsletters and receive exclusive discounts and offers on Packt books and eBooks.

TM

http://PacktLib.PacktPub.com

Do you need instant solutions to your IT questions? PacktLib is Packt's online digital book library.

Here, you can access, read and search across Packt's entire library of books.

Why Subscribe? • Fully searchable across every book published by Packt

• Copy and paste, print and bookmark content

• On demand and accessible via web browser

Free Access for Packt account holders

If you have an account with Packt at www.PacktPub.com, you can use this to access PacktLib

today and view nine entirely free books. Simply use your login credentials for immediate access.

Table of Contents

Preface 1

Chapter 1: Application Architecture 7

Implementing the HTML5 Mobile Boilerplate 8

Downloading and installing the HTML5 Mobile Boilerplate 8

Integrating the build script 9

Creating our application framework 9

Modifying the boilerplate 10

Customizing our markup 10

Customizing our framework 14

Creating semantic markup 18

Creating the header 18

Creating the footer 19

Clearing up section 20

Structuring our stylesheets 20

Global styling 21

Defining our global fonts 21

Our page layout 22

Using content with :before and :after 23

Styling our navigation 23

Responsive design principles 25

Media queries to the rescue 25

Responsive images 26

Fluid images 26

Establishing our JavaScript architecture 27

Structuring our app functionality 28

Namespacing our application 28

Immediately Invoked Function Expressions 28

Table of Contents

[ ii

]

Use strict 29

Default options 29

Defining the constructor 30

The prototype 30

Defining public methods 32

Returning our constructor/function 33

Integrating a custom module template 34

Including our scripts 35

Initializing our framework 35

Routing to a mobile site 36

Redirecting via PHP 37

Redirecting via htaccess 37

Home screen icons 37

Introducing our build script 38

Configuring our build script 38

Minifying and concatenating scripts 38

Minifying and concatenating styles 39

Creating multiple environments 39

Navigating our directories 40

Building our project 40

Summary 42

Chapter 2: Integrating HTML5 Video 43

Configuring the server 43

Video formats 44

Video format directives 44

A simple HTML5 video 44

Single video format 45

Supporting multiple formats 45

Listening to HTML5 video events 46

Video markup review 47

Attaching video events 47

Initializing our video 51

Creating a JavaScript video library 52

Centralizing our events 53

Scope in JavaScript 54

Exposing functionality 55

Integrating callbacks 57

Extending callbacks 59

Using callbacks 59

Tying it all up 61

Customizing HTML5 video controls 64

Summary 70

Table of Contents

[ iii ]

Chapter 3: HTML5 Audio 71

Server configuration 71

Audio formats 72

Audio format directives 72

Simple HTML5 audio integration 73

MediaElement abstraction 74

Creating App.MediaElement.js 74

Initializing App.MediaElement.js 76

Extending the MediaElement API for audio 77

The base template 77

Creating an instance of MediaElement 78

Finding and caching an audio element 78

Initializing MediaElement 78

Dynamic audio player 79

The select element 79

Switching audio tracks 81

The change event listener 81

The change event handler 82

Refactoring our code 84

Initializing our Audio class 85

Customizing HTML5 audio controls 86

Creating custom media controls 86

Adding interactivity to our customized controls 88

Sequential playback 88

The markup 89

The JavaScript 90

iOS considerations 93

Volume 93

Autoplay 93

Simultaneous playback 94

Summary 95

Chapter 4: Touch and Gestures 97

Simplifying the navigation 98

Navigation markup and styling 98

The basic template 98

Styling a select component 99

Navigation interactivity 99

The basic template 100

Caching our navigation 100

Listening and handling the change event 100

Initializing the navigation 101

Table of Contents

[ iv

]

Touch and Gesture events 102

Touch events 102

On scroll 103

On touch and hold 103

On double-tap zoom 103

Supported touch events and how they work 103

Gestures 104

Creating a responsive photo gallery 105

Gallery markup and styling 106

The basic gallery slide list 106

Adding simple gallery controls 107

Making images responsive 107

Styling our gallery 108

Using CSS3 transitions 110

Gallery interactivity 111

The basic template 112

Caching the gallery 112

Connecting our controls 114

Gallery responsiveness 118

Extending the gallery for touch 123

The basic template 123

Default options and modularizing swipe events 124

Listening to touch events 125

Handling touch events 125

Putting it all together 127

The JavaScript 128

The markup 130

Summary 131

Chapter 5: Understanding HTML5 Forms 133

HTML5 input types 134

HTML5 attributes for forms 135

Form layout for iPhone 136

Sample HTML5 forms 137

Setup work 138

Including our forms styling 138

Updating the navigation 138

Including our navigation and forms scripts 139

The forms 139

The login form 139

The registration form 141

The profile form 144

Form validation 150

The basic template 150

Initializing our forms 151

Table of Contents

[ v ]

Attaching events 152

Event handlers 152

Validating our input 153

Form styling for iOS 156

Basic styling 156

Custom styling 157

Summary 161

Chapter 6: Location-aware Applications 163

Geolocation specification 163

Implementation 164

Scope, security, and privacy 164

API descriptions 165

The Geolocation interface 166

The PositionOptions interface 167

The Position interface 169

The Coordinates interface 169

The PositionError interface 170

Use cases 171

Points of interest 172

Route navigation 172

Latest information 172

Google Maps API 173

The API(s) 173

Obtaining an API key 173

Activating the service 173

Retrieving the key 174

Geolocation and Google Maps 176

Markup preparation 176

The Geolocation wrapper 180

Geolocation with Google Maps 184

Summary 188

Chapter 7: One-page Applications 189

Model-View-Controller or MVC 189

Models 190

Views 190

Controllers 190

Relationships 190

Introduction to Underscore.js 191

Implementation 191

_.extend 192

_.each 193

_.template 194

Table of Contents

[ vi ]

Introduction to Backbone.js 196

MVC and Backbone.js 196

Backbone models 196

Backbone views 199

Backbone collections 201

Server-side interactions 203

Our sample application 204

Application architecture 204

Basic sample architecture 205

Application markup 206

Application scripts 212

Summary 238

Chapter 8: Offline Applications 239

Application Cache 239

The manifest file 240

Manifest implementation 241

A simple example 241

The markup 242

The JavaScript 243

Debugging the cache manifest 245

Debugging in the browser 246

Debugging using JavaScript 248

Handling offline applications 249

A simple use case 249

Detecting network connectivity 250

The localStorage API 251

Summary 252

Chapter 9: Principles of Clean and Optimized Code 253

Optimizing stylesheets 254

Validating our CSS 254

W3C CSS Validator 254

Customizable options 256

Validating a successful example 257

Validating an unsuccessful example 258

CSS Lint 260

Customizable options 261

Profiling our CSS 265

Optimizing our CSS 267

Avoid universal rules 267

Don't qualify ID or Class rules 268

Never use !important 268

Modularize styles 268

Table of Contents

[ vii ]

Optimizing JavaScript 269

Validating JavaScript using JSLint 270

Validating a successful example using JSLint 271

Validating an unsuccessful example 272

Customizable options 274

Integrating JSLint 274

Profiling our JavaScript 275

Optimizing our JavaScript 277

Avoid globals 277

Leave the DOM alone 278

Use literals 278

Modularize functionality 279

Summary 280

Chapter 10: Creating a Native iPhone Web Application 281

Setting up the development environment 282

Getting started with Xcode 282

Installing Xcode 282

Xcode IDE overview – the basics 282

Setting up PhoneGap 289

Installing PhoneGap 290

Creating a PhoneGap project 291

The PhoneGap license 292

Configuring our project 293

Transferring a web application 294

Transferring our assets 295

Including our markup 295

Incorporating our styles 298

Inserting our scripts 299

Debugging our application 303

Logging out our code 303

Using the Safari developer tools 304

Extending our application with native functionality 305

Configuring our application 306

Setting up our contacts functionality 306

Summary 311

Index 313

Tải ngay đi em, còn do dự, trời tối mất!