HAPPY BOOKSGIVING
Use code BOOKSGIVING during checkout to save 40%-55% on books and eBooks. Shop now.
Register your product to gain access to bonus material or receive a coupon.
Take advantage of your existing JavaScript and HTML skills to build apps for Windows 8.1 and add them to the Windows Store. It’s a remarkable opportunity—and best-selling Microsoft web development author Stephen Walther will show you how to take full advantage of it.
Offering the same deep insight and practical code that has made his ASP.NET Unleashed the #1 ASP.NET book of all time, Walther covers everything you need to build outstanding Windows Store apps with JavaScript and HTML5.
He guides you through using Microsoft’s WinJS 2.0 library to develop apps for Windows 8.1—you learn how to use JavaScript templates, controls, and data binding. You’ll find in-depth coverage of everything from displaying data with a ListView control to supporting SkyDrive cloud storage, creating games to using IndexedDB and HTML5 forms.
Extensively updated for the release of Windows 8.1, this book covers all of the new features of the WinJS 2.0 library such as the Repeater, SearchBox, WebView, and NavBar controls and the new WinJS Scheduler. This book has been updated with a new sample app that demonstrates how to build a Windows Store app that interacts with Windows Azure Mobile Services.
If you’re a web developer, Windows 8 gives you millions of new potential customers to buy your apps—and you already have many of the skills you’ll need to reach them. Get this book, master the tools and techniques you don’t already know—and go after that huge new market!
Detailed information on how to…
Building Windows Store Apps with with HTML5 and JavaScript
Download the sample pages (includes Chapter 1 and Index)
Introduction 1
Updated for Windows 8.1 2
Prerequisites for This Book 3
Source Code 3
1 Building Windows Store Apps 5
What Is a Windows Store App? 5
Microsoft Design Style Principles 6
Common Features of Windows Store Apps 7
Creating Your First Windows Store App 13
Creating the Visual Studio Project 14
Declaring App Capabilities 15
Creating the HTML Page 17
Creating the Style Sheet 18
Creating the JavaScript File 18
Running the App 21
Elements of a Windows Store App 21
JavaScript 21
HTML5 22
Cascading Style Sheets 3 22
Windows Runtime 23
Windows Library for JavaScript 23
What About jQuery? 24
Building Windows Store Apps with Visual Studio 26
Windows Store App Project Templates 27
Running a Windows Store App 31
Debugging a Windows Store App 33
Using the Visual Studio JavaScript Console Window 33
Setting Breakpoints 34
Using the DOM Explorer 35
Publishing to the Windows Store 36
Register as a Windows Developer 36
Submitting Your App 37
Passing App Certification 39
Migrating from Windows 8 to Windows 8.1 41
Summary 42
2 WinJs Fundamentals 45
Namespaces, Modules, and Classes 45
Using Namespaces 46
Using the Module Pattern 48
Using Classes 51
Asynchronous Programming with Promises 56
Using Promises 57
Using then() Versus done() 59
Creating Promises 60
Creating a Timeout Promise 61
Canceling Promises 62
Composing Promises 63
Retrieving DOM Elements with Query Selectors 63
Performing Queries with the WinJS.Utilities.query() Method 64
Retrieving a Single Element with the WinJS.Utilities.id() Method 66
Using the WinJS.Utilities.children() method 67
Working with the QueryCollection Class 68
Performing Ajax Calls with the xhr Function 69
Specifying Different Response Types 72
Customizing the Properties of the XmlHttpRequest Object 73
Using the Scheduler to Prioritize Jobs 75
Setting Job Priorities 77
Yielding to a Higher Priority Job 77
Summary 80
3 Observables, Bindings, and Templates 81
Understanding Observables 81
Creating an Observable 82
Creating Observable Listeners 83
Coalescing Notifications 85
Bypassing Notifications 87
Working with the WinJS.Binding.List object 88
Creating an Observable Collection of Observables 90
Understanding Declarative Data Binding 91
Declarative Data Binding and Observables 94
Capturing the Contents of an HTML Form 96
Declarative Data Binding and WinJS Controls 99
Declarative Data Binding and Binding Converters 101
Understanding Templates 105
Creating an Imperative Template 105
Creating a Declarative Template 108
Applying a Template with a Query Selector 109
Creating External Templates 111
Summary 112
4 Using WinJs Controls 113
Introduction to WinJS Controls 113
Creating a WinJS Control Declaratively 115
Creating Controls Imperatively 117
Setting Control Options 118
Retrieving Controls from an HTML Document 119
Using the Tooltip Control 120
Using the contentElement Property 121
Styling a Tooltip 121
Using the ToggleSwitch Control 122
Determining the State of a ToggleSwitch 123
Using the Rating Control 124
Customizing the Ratings 125
Submitting a Rating 125
Using the DatePicker Control 127
Formatting the Year, Month, and Date 128
Displaying Only Years, Months, or Days 131
Capturing the Selected Date 132
Using the TimePicker Control 133
Getting and Setting the Current Time 134
Formatting the Hour, Minute, and Period 136
Using the Hub Control 137
Creating Hubs and Hub Sections 138
Handling Hub Section Navigation 139
Using the WebView Control 139
Hosting a Page from the Internet with the WebView Control 140
Handling Navigation and Navigation Events 142
Capturing WebView Screenshots 145
Summary 147
5 Creating Forms 149
Using HTML5 Form Validation 149
Using the required Attribute 150
Using the pattern Attribute 150
Performing Custom Validation 151
Customizing the Validation Error Style 152
Resetting a Form 154
Using HTML5 Input Elements 155
Labeling Form Fields 157
Entering a Number 158
Entering a Value from a Range of Values 159
Entering Email Addresses, URLs, Telephone Numbers, and Search Terms 160
Entering a Value from a List of Values 162
Selecting Files 162
Creating a Rich Text Editor 164
Displaying Progress 165
Summary 167
6 Menus and Flyouts 169
Using the Flyout Control 169
Using the Menu Control 172
Using the AppBar Control 176
Creating a Simple App Bar 176
Using App Bar Commands 178
Showing Contextual Commands 181
Using the NavBar Control 184
Creating a Simple Nav Bar 184
Configuring App Settings 186
Creating About Page Settings 187
Creating Personal Settings 189
Displaying Windows Dialogs 192
Summary 195
7 Using the ItemContainer, Repeater, and FlipView Controls 197
Using the ItemContainer Control 197
Styling an ItemContainer 198
Interacting with an ItemContainer 200
Selecting an ItemContainer 202
Creating Drag-and-Drop Items 204
Using the Repeater Control 208
Using an External Template 210
Using a Nested Template 211
Using the Repeater with the ItemContainer 214
Using the FlipView Control 215
Displaying Page Numbers 219
Creating Custom FlipView Buttons 221
Summary 222
8 Using the ListView Control 223
Introduction to the ListView Control 224
Using Different ListView Layouts 228
Using Grid Layout 229
Using List Layout 231
Using Cell Spanning Layout 231
Invoking Items in a ListView Control 236
Selecting Items in a ListView Control 238
Sorting Items in a ListView Control 241
Filtering Items in a ListView Control 242
Grouping Items in a ListView Control 245
Switching Views with Semantic Zoom 248
Switching a ListView Template Dynamically 253
Using Drag and Drop 256
Reordering Items in a ListView 256
Dragging Items from ListViews 258
Summary 262
9 Creating Data Sources 263
Creating Custom Data Sources 263
Creating the Data Source Class 264
Creating a Data Adapter 264
Implementing the getCount() Method 265
Implementing the itemsFromIndex() Method 265
Implementing the insertAtEnd() Method 267
Implementing the remove() Method 267
Implementing the change() Method 268
Handling Errors 268
Implementing the setNotificationHandler() Method 269
Creating a File Data Source 270
Using the File Data Source 271
Creating a Web Service Data Source 276
Creating the Data Source 276
Creating the Web Service 278
Using the Web Service Data Source 280
Creating an IndexedDB Data Source 281
Overview of IndexedDB 282
Using the IndexedDB Data Source 286
Summary 293
10 Using Windows Azure Mobile Services 295
Creating a Mobile Service 295
Creating a Database Table 297
Installing the Mobile Services for WinJS Library 298
Performing Inserts, Updates, and Deletes 299
Connecting to the Remote Database Table 299
Inserting Database Data 299
Updating Database Data 300
Deleting Database Data 301
Performing Database Queries 301
Looking Up a Single Database Record 301
Retrieving a Set of Database Records 302
Performing Validation 304
Performing Custom Actions 306
Debugging Script Errors 308
Summary 309
11 App Events and States 311
App Events 311
Handling the Activated Event 312
Handling the Error Event 313
Deferring Events with Promises 314
Creating Custom Events 315
Suspending, Terminating, and Resuming an App 315
Detecting When an App Is Suspended and Terminated 316
Detecting the Previous Execution State 316
Testing Application State with Visual Studio 317
Storing State with Session State 318
Designing for Different Window Sizes 320
Setting the Minimum App Width 320
Using CSS Media Queries 321
Using the window resize Event 324
Scaling Content to Fit Different Screen Resolutions 326
Defining a Viewport 326
Using the ViewBox Control 329
Summary 332
12 Page Fragments and Navigation 333
Using the HtmlControl Control 333
Creating a Page Control 336
Creating Multi-Page Apps 340
Creating a Navigation App 340
Understanding the Navigation App default.html Page 341
Adding New Page Controls to a Navigation App 343
Navigating to Another Page 345
Understanding the Navigation API 346
Understanding the PageControlNavigator Control 347
Understanding Navigation State 347
Summary 351
13 Creating Share and Search Contracts 353
Supporting Sharing 354
Creating a Share Source 356
Creating a Share Target 360
Using the Search Charm 368
Declaring Your App as a Search Provider 369
Providing Search Suggestions 370
Handling Search Activation 372
Adding a Search Results Page 373
Using the SearchBox Control 376
Adding the SearchBox Control to a Page 377
Providing Search Suggestions 378
Displaying Search Results 379
Using the Windows Content Indexer 380
Understanding the Windows Content Indexer API 381
Creating an Indexer Helper 381
Using the Indexer Helper 382
Summary 385
14 Using the Live Connect API 387
Installing the Live SDK 388
Adding a Reference to the Live SDK 388
Registering Your App 389
Initializing the Live Connect SDK 391
Specifying Different Scopes 391
Authenticating a User 394
Logging a User into Live Connect 394
Creating Account Settings 396
Authentication and Windows Azure Mobile Services 401
Configuring Your Mobile Service 401
Setting Permissions for Your Mobile Service 402
Updating the Mobile Server Scripts 402
Logging Into Azure Mobile Services 404
Retrieving Basic User Information 406
Uploading and Downloading Files from SkyDrive 408
Listing SkyDrive Folders and Files 409
Downloading Files from SkyDrive 411
Uploading Files to SkyDrive 413
Summary 415
15 Graphics and Games 417
Overview of the Game 418
Creating the Game Tiles 419
Playing the Game Sounds 420
Creating the Game Canvas 421
Capturing User Interaction 424
Creating the Update Loop 425
Creating the Render Loop 427
Summary 429
16 Creating a Task List App 431
Overview of the App 432
Setting Up the App 433
Connecting to External Services 435
Optimistic Inserts, Updates, and Deletes 437
Adapting to Screen Changes 440
Creating a Custom Control 444
Using Text to Speech 446
Summary 448
Index 449