Author Archives: John Resig

We’re pleased to announce the third alpha release of the jQuery Mobile project. This release includes a number of bug fixes and enhancements to the original jQuery Mobile Alpha 1 and jQuery Mobile Alpha 2 releases.

Overall the quality of jQuery Mobile has been greatly improved. In general, the following improvements have been doing since Alpha 2:

The team made about 480 commits!

Fixed around 150 bugs

Created 240 unit tests (almost all are passing in most browsers)

Refactored and improved our core and navigation plugins in many ways, and improved consistency across plugin APIs

Increased our A-Grade browser support to include Firefox Mobile (Fennec), Opera Mobile / Mini, and refined our support for iOS, Android, BlackBerry 6, Palm WebOS, and most modern desktop browsers

Wrapped the jQuery UI datepicker plugin with a touch optimized theme (it’s not included in our build by default)

Fixed our “fixed” toolbars – Thanks Kin!

Improved keyboard and general accessibility support on VoiceOver

Gotten very close to a-grade support for Windows Phone 7 and Nokia (in branches currently)

Made headway on several feature branches, like history.pushState support (for hash-free URLs), and simulated scrolling

Made countless other improvements and optimizations

Right now we’re planning on releasing the first beta within the month before moving on to our 1.0 release. Our goals moving forward are to improve performance, user-experience and responsiveness, and extend our support to Windows Phone 7, BlackBerry 5, and Nokia devices, among other browsers. Please follow our twitter account for updates: @jquerymobile.

Demos and Documentation

All the jQuery Mobile demos and documentation can be found in the unified demo application:

Download

We provide CDN-hosted versions of jQuery Mobile for you to include into your site. These are already minified and compressed – and host the image files as well. It’ll likely be the fastest way to include jQuery Mobile in your site.

Testing

If you wish to help with testing of jQuery Mobile we recommend that you hop on to Github and grab the latest source. Additionally please test against the latest version of the source at our test URL and file bugs in the bug tracker:

Changelog

Ajax Navigation

The Ajax naigation system has been deeply re-factored to improve performance and handle more edge cases. This includes event handling for click, submit, and hashchange, all of the base tag management, path management, active link class handling, etc. and better support for dialogs.

We changed page navigation scripting to use data-url attributes instead of IDs for storing page URLs. This fixes a number of issues, most importantly a bug which exposed a conflict between jQuery’s selector engine that would result in un-enhanced pages whenever linking between two pages in the same directory. The shift away from interal ID attribute usage also allows users to bind page events (pagecreate, pagebeforecreate) to a page div by its ID, which was a frequent cause of confusion when it didn’t work as expected in former versions of the framework.

Fixed baseTagTest() in jquery.mobile.support.js, so that it uses any pre-existing base tag for testing. This fixes the bug on Webkit (Safari) where the relative paths for links were being resolved/expressed with the document path instead of the original base path.

Page transitions are now smoother and we have more improvements queued up for the next release.

Dialogs

Close behavior works better and can be invoked by adding a data-rel=”back” attribute on a link to provide a way to dismiss with dialog and also provide a real href for non-JavaScript users. Dialogs aren’t tracked in the history stack to prevent deep-linking but can be dismissed via the device’s/browser’s back button. Improved up click and submit handling on forms in dialogs. Dialogs can now be used more reliably in multiple-page documents as well.

Toolbars

Fixed positioning of headers and footers was completely re-factored and is much smoother so they no longer scroll with the page. Persistent footer nav bars now reliably show across pages.

List views

Fixed rendering issues with single item lists, first/last item styles and thumbnail images. Made the list parser more forgiving of whitespace, line breaks and other formatting. Nested lists can now be deep-linked to via the hash and support the auto-generated back buttons. Split buttons now work in older versions of Android and work correctly after calling refresh() for dynamically added items.

Form Controls

Now support enable, disable, and refresh methods (where applicable). Native form elements can be used by adding data-role=”none” attribute on the element or globally via the global keepNative option. Form controls can now be styled with data-theme attributes and will automatically inherit the theme swatch of their parent container. Ajax form handling has been improved.

Text Inputs

Search input has improved styling and fixes the inner shadow bugs in iOS. Input types can now optionally degrade to alternate types, instead of text. First such example is type=range degrades to type=number. These types are configurable via the page plugin’s degradeInputs option

Radiobutton and Check Boxes

New touch events make these much more responsive for immediate visual feedback

Flip Toggle

New touch events make these much more responsive, and can now be operated with the navigator keypad on Android and Blackberry 6, as well as through standard keyboard input.

Slider

New touch events make these much more responsive, fixed a bug that validated the text input too fast to enter a value. We now bind the slider drag event handling to touch and mouse events, which allows us to support Opera Mobile, Blackberry and other platforms.

Select Menus

Deep re-work of select menus to improve performance and feature set. New features include support for multiple select, optgroups, placeholder and disabled options. Native select menus can now be used instead of custom menus by adding data-native-menu=”true” attribute for even faster performance with long lists while maintaining the custom select button style.

Submit Buttons

Now, form input/button elements are appended to a div-based “button”, invisibly filling its width and height. The user now interacts directly with the native control, rather than having to trigger a click from another anchor (which formerly prevented some native submit event handling from working). A workaround is still included to ensure the input’s name/value is submitted along with the form when it’s not a type=reset, as this is necessary for the button data to appear in the serialized form data.

Buttons

Added new icons for home and search. Added extra padding to buttons that don’t have text labels (icon only) to improve hit area.

Theme

Improved the contrast of the focus state for lists and buttons to make them more usable in Android with the navigation pad. Tweaked gradient styles to better support Firefox and Internet Explorer. Fixed icons and loading image issues on Opera Mobile.

We’re pleased to announce the second alpha release of the jQuery Mobile project. This release includes a number of bug fixes and enhancements to the original jQuery Mobile Alpha 1 release.

Overall the quality of jQuery Mobile has been greatly improved. A number of subsystems have been rewritten (both for clarity and for performance) and cross-browser compatibility has seen a marked increase in quality. We’re planning on releasing at least one more alpha (or beta) before the end of the year, followed by a final 1.0 release in January.

Demos and Documentation

All the jQuery Mobile demos and documentation can be found in the unified demo application:

This includes demos and documentation for all the changes in jQuery Mobile 1.0a2, including:

Events

API and Methods

Ajax Form Handling

URL handling and transitions

Global Configuration

Download

We provide CDN-hosted versions of jQuery Mobile for you to include into your site. These are already minified and compressed – and host the image files as well. It’ll likely be the fastest way to include jQuery Mobile in your site.

Testing

The current state of the jQuery Mobile test lab.

If you wish to help with testing of jQuery Mobile we recommend that you hop on to Github and grab the latest source. Additionally please test against the latest version of the source at our test URL and file bugs in the bug tracker:

Bug Fixes

Lots and lots of bug fixes have been made in this release – about 200 tickets have been closed since the 1.0 Alpha 1 release and we’re continuing to work strong

List Views

The performance of loading a large listview has been greatly improved. We’re seeing around a 3x improvement in speed, depending upon the platform.

Additionally you can now call refresh on a list view for when you add new items, to apply the list view styling to them.

Select Menus

The new refresh functionality has been added to select menus as well, allowing you to add the select menu styling to newly-injected items.

Additionally the accessibility of select menus has been improved, allowing your to navigate through the select menu using the keyboard (such as being able to open the select menu with the ‘enter’ key and navigate using the arrow keys).

Scrolling and Headers/Footers

The performance of page scrolling has been greatly improved – as has the performance and quality of fixed headers and footers.

Navbar Overhauled

URL Navigation Refactored

Much of the handling for loading new pages (via Ajax) has been overhauled and tremendously improved. The functionality has been encapsulated in a new changePage method that gives a great amount of flexibility as to how data should be loaded and how page-to-page transitions should work.

Ajax Form Handling

In addition to the automatic handling of internal links (converting them into Ajax requests and introducing smooth page-to-page transitions), Alpha 2 also handles the same functionality for forms. Form submissions will now pass through the changePage method – allowing for smooth form submission, transitions, and page loads. More information about this technique can be seen in the documentation.

jQuery UI Widget Factory

All of the relevant jQuery Mobile widgets have moved over to building off of the jQuery UI Widget Factory. This gives us the ability to have greater extensibility and methods (such as the ability to disable controls). Specifically in this release Dialog, Form Buttons, listview, collapsible, Checkbox/Radio, textinput, slider / switch, Select menu, have all moved over to the widget factory, and we’re continuing to work on extending the methods and events those plugins provide.

Dialog

In addition to moving to the jQuery UI Widget Factory a new method for dialogs has been introduced: close (naturally, allowing you to close a dialog once open). You can call it like so: .dialog("close").

Global Configuration

jQuery Mobile now has a number of ways to override the initial configuration of a number of aspects of the framework (such as disabled Ajax-style links or forms). This can allow you to sculpt jQuery Mobile to work in situations that are more-specialized and don’t fit the complete design methodology of the framework (giving you the ability to only use a couple widgets rather than the framework as whole, for example).

Media Query Helpers

A new set of CSS classes have been introduced that are automatically updated on resize and orientationchange that you can use to scale your layout to particular devices and rotations. These are designed to work even in browsers that don’t support CSS Media Queries.

New Methods

A number of static methods have been added to make some common tasks quite simple, such as: Scrolling the page, showing the loading message, changing pages, and other tasks.

Events

The documentation for jQuery Mobile’s events has been drastically improved. jQuery Mobile publishes a number of events that can be utilized to write complex mobile applications (and can be used separately from the jQuery Mobile framework).

Thanks

For this release we would like to thank Filament Group (specifically Scott Jehl who was responsible for much of the development of the release and Todd Parker who was responsible for the design), Adobe (specifically Kin Blas who helped to fix a number of bugs and Jorge Taylor), Ben Alman (for helping to improve orientationchange), RIM (for providing us with test devices), and Nokia (for providing us with test devices).

Today we’re pleased to announce the first alpha release of the jQuery Mobile project. jQuery Mobile is a user interface framework, built on top of jQuery, designed to simplify the process of building applications that target mobile devices.

We’ve made really good progress since we first announced the project two months ago. We’ve created a number of components, layouts, and theming tools to greatly simplify the process of building a mobile application.

There are two guiding principles of the jQuery Mobile project that differentiates it from most other offerings: It’s completely built on the principle of progressive enhancement and is designed to be functional in all HTML-capable mobile browsers.

Demos and Documentation

All the jQuery Mobile demos and documentation can be found in the unified demo application:

This includes demos and documentation for all the components in jQuery Mobile 1.0a1:

Theming and Layout

Headers/Footers (Fixed and Persistent)

Form Controls

Dialogs

List Views

Events

Transitions

Features

Progressive Enhancement: jQuery Mobile is built completely around the principle of progressive enhancement: taking a fully functional HTML web page, layering on additional JavaScript functionality, and giving capable browsers a top-of-the-line experience. This means that your jQuery Mobile application will work in more browsers, guaranteed – even in mobile browsers that don’t support JavaScript (a regular occurrence).

For this first alpha release we’ve managed to cover support for many of the A-Grade browsers that we wish to support (such as iOS devices, Android devices, Blackberry OS 6, webOS, Fennec, and Opera Mobile). There are still bugs on those platforms and a few of the other platforms are failing pretty hard. We’re working to resolve these issues in time for the 1.0 release.

Graceful Degradation: jQuery Mobile uses the very best HTML 5 and CSS 3 features to provide the best possible experience in the most-capable browsers. However we don’t consider this to be an all-or-nothing proposition: Less capable browsers will still receive the best possible experience that their platform can handle. They may not have all the gradients or fancy transitions of the best platforms but they’ll still be highly usable. The most basic browsers will easily degrade back to simplified HTML and CSS.

Accessibility: All jQuery Mobile components are ARIA accessible. They are keyboard navigable (on a desktop computer) and can be navigated using a screen reader. While at this very moment jQuery Mobile is highly targeted at mobile devices we hope to quickly grow the scope of the project to encompass many platforms: mobile, tablets, desktops, and beyond.

Simplicity: jQuery Mobile is completely markup-driven requiring no JavaScript configuration. This makes it incredibly easy to get started: Just open an HTML file, edit its contents, and you’ll have a fully-capable jQuery Mobile application in no time.

File Size: By utilizing the principles of progressive enhancement and leaning heavily on markup-driven configuration the file size of jQuery Mobile remains quite small. The JavaScript for the alpha release is only 12KB and the CSS is a mere 6KB. Very few images are used in the design of the framework (mostly icons) – instead making heavy use of CSS.

Theming: jQuery Mobile has a comprehensive theming structure built from the ground up to enable you to build capable web applications. This goes far beyond the styling system provided by jQuery UI and gives you the ability to truly adapt the styling of your entire application. For the alpha release all theme configuration must be done manually but for the final 1.0 release we’ll be providing a complete Themeroller tool for theming your application.

App-Capable: The usefulness of jQuery Mobile goes far beyond making impressive mobile web applications – you can also use it to build apps that can be purchased and deployed through an app store. We strongly recommend using PhoneGap as it gives you the full tools you need to deploy HTML/CSS/JavaScript applications to a mobile device.

Download

We provide CDN-hosted versions of jQuery Mobile for you to include into your site. These are already minified and compressed – and host the image files as well. It’ll likely be the fastest way to include jQuery Mobile in your site.

Contributing

Reminder: This is the first alpha release of the framework. There will surely be bugs in your platform of choice. The best way you can help us is to use it, file bugs, and even provide patches back. Please discuss issues that you encounter in the Developing jQuery Mobile forum.

We’re looking to do a few more preview releases during the next couple months leading up to the 1.0 release of the platform in January. Thanks for your help!

Thank You

We had tremendous amount of help from a variety of people and companies and would like to thank them:

Filament Group – For providing countless development hours to the project – taking it from a mere idea to a full-fledged framework in an incredibly short amount of time – they are super-human.

Palm – For providing us with finances, developers, and devices to test on. Palm is all about their webOS platform – which is completely designed around building HTML/CSS/JavaScript-based applications.

Research In Motion – For providing us with finances and devices to test on. They’re working on their Widget SDK and WebWorks platforms – a simple way of building Blackberry Widgets with HTML/CSS/JavaScript.

Adobe – For providing us with developers to help fix bugs and do testing. They’re doing some great things with jQuery Mobile and we’re really excited to see how they can push it forward.

DeviceAtlas – For providing us with advice and financial support. The DeviceAtlas folk have been doing mobile work for a long time now and have an incredible amount of insight into the platforms. They build tools to make it easier to practically deploy mobile web applications.

Mozilla Corporation – For providing us with devices to test against and for sponsoring the development of John Resig to work on jQuery and jQuery Mobile.

Nokia – For providing us with devices for testing. Nokia is working on a great platform for deploying web technology-based applications to Nokia devices.

Coming Soon

We have a number of components and features that we weren’t able to finish for the alpha release. We will be tackling them soon and they should be ready by the time 1.0 is ready.

Date Picker, Time Picker

Progress Bar

Spinner

Themeroller Support – jQuery Mobile is completely themable but we hope to make it even easier with the Themeroller tool.

Tablet Optimization – Basic tablet support exists now but we’re looking to make some rather large improvements.

This is the first status update regarding the work that we’ve been putting in to jQuery Mobile. We hope to have similar updates about once a week – along with posts describing new things that we’ve learned along the way.

Sample Mobile Components

Some sample components implemented by the folks at Filament Group. Currently the components are done purely in HTML/CSS (no images), are ARIA accessible, and are completely implemented using progressive enhancement.

Sample Selection Dialog

This is a sample modal dialog from which options from a large select menu could be displayed.

Activating webOS Devices

The webOS team recently sent us a few more phones to test against so we’re actively adding them in to our test bed and hooking them into TestSwarm.

Fixing Blackberry 4.7

A few commits have landed the past couple days (and quite a few more will be landing over the next couple) taking care of compatibility issues in Blackberry 4.6 and 4.7.

The jQuery project is really excited to announce the work that we’ve been doing to bring jQuery to mobile devices. Not only is the core jQuery library being improved to work across all of the major mobile platforms, but we’re also working to release a complete, unified, mobile UI framework.

Right now we’re working hard, planning out the features that we want to land and doing testing against the devices that we want to support — and hoping for a release later this year. If you wish to help, please join the discussion in the jQuery Mobile Community.

The start of jQuery’s Mobile testing lab.

The jQuery project has received sponsorship from a number of mobile browser vendors as well.

Palm, working on the webOS platform, is excited to sponsor jQuery’s mobile work:

“The jQuery community has focused on making the Web as productive and fun as possible. When we heard the mission behind jQuery Mobile, we wanted to help. With webOS we have shown that the Web platform is fantastic for developers, so we are excited to help make jQuery Mobile as good as it can be.” -Dion Almaer

Mozilla, working on Mobile Firefox, is also eager to sponsor jQuery’s mobile work:

“As a longtime supporter of the jQuery project and its wider community we are excited to extend our support to the jQuery Mobile project. jQuery Mobile has the potential to make cross-platform Open Web development significantly simpler.” -Pascal Finette

Filament Group Inc., a Boston-based design and development studio, is both a corporate sponsor and leading the design and front-end coding effort for the jQuery Mobile project:

“Filament is thrilled to sponsor and lead the design for the jQuery Mobile Framework; it’s a great opportunity to extend our work on ThemeRoller and jQuery UI. We’re especially pleased that progressive enhancement will be built right into jQuery Mobile – we think this positions it really well for broad accessibility and future compatibility.”

We’re thrilled to be working on this project. The mobile web is desperately in need of a framework that is capable of working across all browsers, allowing developers to build truly mobile web sites. We’re doing all we can to ensure that jQuery Mobile fills that need.