300ms tap delay removed on Chrome for Android
updates.html5rocks.com
updates.html5rocks.com
This is the wrong solution, in that it makes things more complicated and results in a generally poor experience even after the change. But that is what Google does all the time in UI, so I guess I have no reason to be surprised by this.
The proper solution: Do not make double-tap be a UI action. Done.
Or, if you insist on double-tap, make it only be an action that stacks transparently with single-tap. For example, in touch controls for The Witness, single-tap makes you walk toward the target. Double-tap makes you run. So as soon as we read a single tap, we can start doing the action without delay, and if we see the second tap we just kick up your target speed. It works great.
In short, hey Google, please stop doing band-aid solutions that make things worse, and hire some people who really have solid design vision, and give them the power to get things done.
This is why we have the beta, to test this stuff.
Don't tell me that your users don't have an ambient level of uncomfortability with the UI, because we all know that is the case (it is even the case on iOS, now much more than it was with iOS 6!)
If I were the UI lead for Android, I would be scouring the system from top to bottom, looking for ways to simplify and streamline, to increase predictability. All kinds of current UI actions would get thrown away (hint to Google Maps people: Shake is not an intentional UI action, it is what happens accidentally 5 times per minute when I am using your software. It should not be bound to anything, ever. [Apple is just as bad for binding shake to Undo, but at least theirs has a higher threshold now]. It is nice that at least now you can finally turn it off after it activates a few times, but haven't you noticed how everyone turns it off all the time, and nobody ever uses it for the intended action ["leave feedback"]? Get rid of it.)
Anyway, all I can say to this response: "This is why we have the beta, to test this stuff."
Is that if this attitude were actually solving all the problems that need to be solved, Android would have an amazing UI that everybody raves about. That is not the case! Why is it not the case?
Removing the delay 100% of the time, always, would be a big win.
However, with non-zoomable pages, this isn't a new problem at all.
Perhaps people will be more inclined to write mobile-optimized sites that don't need to be zoomed if they can get reduced latency as a bonus.
The fact that mobile sites somehow assume that zooming is bad is the exact reason for why they are useless and most people, that know what they are doing, are not browsing mobile sites at all but going to great lengths to get the full blown version that lets you get an overview and zoom in on the interesting parts instead of endless scrolling to find what you are looking for.
I've yet to experience a mobile site I prefer to the real thing, on any of my mobile devices.
Which also makes all browsers that allow a page to disable zoom badly built.
Not all mobile-optimised sites have endless scrolling. Presenting the same amount of data to mobile as you would desktop, but linearised, is bad design. Having to pan and zoom is also bad design.
Conditional loading is the ideal http://adactio.com/articles/5043/.
I do this in a minor way on my blog http://jakearchibald.com/ - the side bar doesn't appear on mobile, as it would linearise below the main content where few would see it. Instead, it becomes a navigation item at the top of the page.
That is to say that it usually isn't the best when paired with pages made for desktop browsers. But it is the best we've got.
Your blog is very simple, and that's great, but it hardly represents the difficulties that people have to address when creating a mobile site.
Also, having to press "Who" requires a new page to be loaded as compared to it being there in the first place (conditional loading is most definitely not ideal).
But, why is your mobile version better than the desktop version when on a phone? Honestly?
The desktop version gives me an overview, I can get a better glimpse of the topics (and you on your sidebar) and I quickly and literally dive in on the content I'm after without having to load a new page (which is expensive). And I bet that the desktop version would be just as readable and fast as your mobile version. But I can't test it out because your page does not respect the "request desktop site" option on the latest Chrome on android (4.4.2). That is really bad.
Your page is so simplistic that I would assume, only being served a mobile page, that if I didn't find what I was looking for I'd wonder if it were present on the "real" site. That is reason alone not to have a mobile version at all for a simple site. Yes, that's only a consequence of the pathetic state of affairs that is mobile web pages but it is the reality.
So, you agree that a mobile site with endless scrolling is bad. How have you imagined to solve that when your blog count increases? With pagination every 10 posts? That is bad enough on a workstation but traversing pages on a phone is a nightmare. Just give me the whole list in the desktop version and with a flip of a finger I can scroll through the content with breeze.
Mobile Safari allows the viewport settings to be changed at runtime, so you could make a JavaScript bookmarklet to achieve the same. EDIT: already done https://gist.github.com/jasonbarry/6047338 as per user andrethegiant below.
I don't believe the problem you brought up is very important. Why do I care if there is a "constant, learnable latency", as long as each latency is reasonable? In the end I assume that the slowest response is the standard and any actions that happen faster are a pleasant surprise.
But more importantly this change doesn't preclude them from removing double-tap altogether in the future. I agree it is a half-solution now, but it's better than nothing if you are willing to grant that differing latency across pages is acceptable.
I do like the insight about stacking double-tap on top of single-tap, I'm just not sure how to apply it in the current world where single-tap means click/navigate and double-tap means zoom.
In video games specifically, where I work, it is well-known that you would rather have a game that runs slower, but with a solid frame rate, than a game that has a highly-variable frame rate that is faster on average. (This is more of a continuum situation than a discrete action like a tap, but the basic principle holds).
P.S./edit: Double-tap only means zoom because that is what they happened to implement. It is a convention easily changed. Look at how heavily Apple just revamped their entire interface, for an audience that is arguably much less savvy than the Android audience.
Using double-tap in this way was a mistake; it is an easy mistake to fix if you have enough design vision to know where you are going.
With interaction response, the faster the better.
Seriously, there are tons of studies on this. I am not making it up.
Overall I'm not sure how I feel about this topic myself but I do understand jblow's point and somewhat agree with his rant.
Within a given game (site), I'd prefer to have consistent frame-rate (latency). But if GTA (Gmail.com) is consistently faster than Need For Speed (NYTimes.com), that would bother me less.
Because people would rather have slower and more predictable than faster and less predictable. Especially when it comes to user interface actions where things get pushed down into muscle memory.
No! Pinch-zooming is fantastic for navigating content. It lets you see an overview of the whole page, then zoom in on the bit you're interested in. It lets you control how much is seen on screen depending whether you want to read it in depth or skim it. It is a key feature of browsing the web on mobile devices. Mobile websites that disable pinch-zoom by using enormous text on extremely narrow fixed-width pages are a pessimization, and are almost always worse than the desktop page rendered on the mobile.
That's my opinion. I search in vain for a browser whose "view in desktop mode" actually works.
Have you tried Firefox for Android?
And no, the "view in desktop mode" toggle in Firefox for Android almost never works. I've considered rage-reporting bugs for all the URLs it fails on, but it's an idle fantasy right now. It clearly isn't a priority for Mozilla.
That creates a problem that is hard for the browser to deal with cleanly.
I felt guilty for using it because there was an outside chance it might make someone have to develop for it.
My phone has the same resolution as my computer monitor and 45" TV. But due to size and viewing distance, the same font & image sizes shouldn't be used on all.
This is why we have ppx/device-pixel-ratio on the web.
???
Longer columns doesn't take higher intelligence, it just strains your eyes.
http://baymard.com/blog/line-length-readability
Have you ever seen a print edition of the NYT or WSJ?
Even Motherfucking Website[1] cocks this one up and disables zooming.
Although I agree that there should be an option to disable the disabling of viewport zooming; I think it makes for a better UX for most mobile website viewers.
When the page loads no zooming happens; how about we let me decide whether or not I feel like zooming it or not?
If I accidentally zoom I know how to not-accidentally un-zoom.
All zoom-disabling is user hostile.
Me too! I made a bookmarklet[1] that restores your ability to zoom on sites that explicitly disable it.
You hit some sites, and fonts that should be the same size (and are on the desktop site) are just wildly different sizes.
I'm using Dolphin almost exclusively for this single reason.
Chrome and Firefox both try and guess what the font size should be and ignore the web page telling it. Thus the font varies all over the place, though the pattern seems to be depth of text in DOM.
Chrome has also more HTML5 related bugs than all other modern browser combined, as JQuery devs mentioned in their blog (2.0 release). It correlates with my own web dev expierence as well. It would be great if Google would employ some QA managers.
> No! [...] then zoom in on the bit you're interested in.
??? Why "No"
Deskop pages also have a habit of being laid out with very long lines that don't reflow when you zoom in, this is
bad in general (narrow columns are more readable) but especially bad on a portrait-orientation device.So I'm really happy with the obsessive pursuit of speed, responsiveness and user experience by the Chrome team. It's probably a good idea to seek feedback on this for accessibility reasons, but it feels like this change would be for the better when applying the 80/20 rule.
This along with the numerous improvements to Chrome's developer tools and remote debugging features (https://developers.google.com/chrome-developer-tools/docs/re...) coming soon really show an increased focus on making high performance web apps on mobile a realistic option.
Hopefully the next game we make will be able to launch on iOS and Android thanks to these speed improvements. :)
Android 4.4 (KitKat) includes a new WebView component based on the Chromium open source project
Will the new WebView auto-update? (...) There are large engineering and logistical challenges. We're not quite there yet, but we're working on it.
https://developers.google.com/chrome/mobile/docs/webview/ove...
If you're using onclick/mousedown in your game, then change them to touch events (touchstart and whatever Windows Phone does). These work without delay regardless of viewport settings.
If you have existing codebase that can't be easily changed to use touch events, you can use FT Labs' fastclick to emulate onclick with no delay (the library is aware of latest Chrome's change):
The change here is that if the computed viewport is smaller or equal to the device width, fast clicks will be enabled without having to disable scaling. Double clicking won't work, but pinch-to-zoom will.
Overall it's a fairly minor change for those thinking about making HTML5 apps, but it is a big positive change for users visiting existing web sites that have mobile/responsive versions that haven't disallowed scaling.
Is this true for mobile Safari as well?
Edit: I mean double tapping on an unzoomable page.
Even better, add another Setting to let users change the amount of time the browser waits for the second tap. Windows has had this since at least Windows XP (Start → Settings → Control Panel → Mouse → Double-Click) and I think since Windows 95. Set it to 300ms as default so existing users aren't adversely affected. People like me can set it to 180ms (which is what the iOS stopwatch indicates my maximum double-click delay is).
If you want to put the icing on the cake, add a little applet in Settings to measure your double-tap speed.
This change is designed to make the existing web faster. If we improve the performance of rendering, JavaScript, or scrolling, we don't put it behind an opt-in option. Why should this be?
You can add 'with an under-developed theory of mind' to the end of that list.
I wouldn't mind swapping a bit of a delay for a checkbox in the settings. I wouldn't even mind the checkbox being unticked by default.
Soooo many "Should we do A or B?" debates over software functionality are settled by "Do A but let the user change it to B in the Settings."
Okay, smart-ass, what's your solution? Maybe we should put the GUI inside a box with the "A or B" decision delegated to a mechanism that monitors a radioactive source. We'll call it Schrodinger's GUI.
I hate the delay between tapping the screen and the "click" being recognised. It drives me up the wall. I'd far rather switch off "Double-tap to zoom" for all pages (not just those with the relevant meta-tag) and use pinch-to-zoom instead.
There are obviously very good reasons to not disable "Double-tap to zoom" entirely or by default (primarily accessibility, but also the fact that people have gotten used to it) but where's the downside in making it a Setting so that people like me can choose to disable it? Okay, maybe the upside is quite small but there's zero downside and (given that they've already implemented the ability to switch "Double-tap to zoom" off if the webpage has the relevant meta-tag) it would be relatively easy to implement.
Making stuff like this user-configurable is a Good Thing. It's like when Apple changed the behaviour of the iPad's side switch in iOS 4.2 to switch it from rotation lock to audio mute and Steve Jobs said there wouldn't be a configuration option to let users change the switch back to rotation-lock [1]. A lot of people (including me) were disappointed. Fortunately, he changed his mind and iOS 4.3 made the function of the side-switch user-configurable in the Settings.
[1]: http://9to5mac.com/2010/10/23/jobs-there-wont-be-a-mute-swit...
<meta name="viewport" content="width=device-width, user-scalable=no">
vs
<meta name="viewport" content="width=device-width">
case, almost all browsers already remove the delay for user-scalable=no pages, but its a good improvement to be fast and still allow zooming, the article explains that, but I got confused skimming the title + first paragraph.One of the things ngTouch gives is "A more powerful replacement for the default ngClick designed to be used on touchscreen"[1]. Oh, I see its not bundled in the core angular.js file.
Wouldn't it make more sense to introduce a new setting something like "immediate-events=yes" that lets developers opt-in to this behaviour?
I'm sure I'll adjust but I do wish this was an opt in/out thing.
Sweet. I was thinking mostly about non-mobile sites so then this works. The only thing I can think of (and this isn't very often) is maybe images. For example on the mobile Wikipedia site there is often an image at the top of an article that I will double tap to zoom into and then another double tap to revert to normal zoom level. Definitely not the typical use case but something to consider. Maybe only have the 300ms when the first tap is on an image that is not a link. Just spit-balling here.
Either way if it is only for mobile optimized sites, I don't see this being a problem.
Should the 300ms tap delay be gone in this case too, or is it only apps with precisely <meta name="viewport" content="width=device-width"> OR <meta name="viewport" content="width=device-width, user-scalable=no">?
We are discussing whether to follow Chromium's lead and also disable double-tap on pages with width=device-width:
https://bugzilla.mozilla.org/show_bug.cgi?id=941995
(I am a mobile Firefox developer.)
On the other hand - the desktop solution would be fine too; just don't solve the problem (i.e. you can't double-tap clickable content).
I think I'd rather have fast responsive taps rather than double-tapping even on links; regardless of the zoomability settings.
Here are the problem cases:
* Delegated event listeners - as in the click handler is on the html/body element. The listener may do something when a click happens, it may not. This means everything is potentially clickable, and we can't know in advance.
* Large click areas - Areas where the article title, summary and picture are all part of the same link. It's not always clear at first, but you'd be surprised how often you trigger it by accident.
But give it a go yourself!
p.s. I think this is the Firefox bug https://bugzilla.mozilla.org/show_bug.cgi?id=922896
I don't get how that helps for the use-case which triggered the original introduction of the tap delay: a double-tap is not a "lower-level" action than tap.
The user agent has determined (via methods out of scope for this specification) that touch input is to be consumed for a touch behavior,"
Touch behaviours are things like scrolling, double-tap to zoom, pinch zoom.
The browser's double-tap to zoom gesture is at a lower level than the click event in the browser. As in, a double-tab will be consumed by the browser and never hit the page.
Your previous comment seems to imply otherwise: if the UA must dispatch pointercancel rather than pointerup on a double-tap, it has to wait until it can determine whether a double tap happened.
A double tap goes: pointerdown, pointercancel.
If the pointerdown event does event.preventDefault, it goes pointerdown, pointerdown.
The double-tap prevents the click. Preventing default in the pointerdown prevents the double-tap and also the click.
Try it in IE, or another browser using touch events.
You make no sense, by your own description the double tap gesture changes what pointer events fire, pointerup can not fire until the UA knows for certain it's not going to be a doubletap, same as click.
Double tap does not change pointer events (https://dvcs.w3.org/hg/pointerevents/raw-file/tip/pointerEve...), they come first. But 'click' is not a pointer event, it's the result of some pointer events, and the lack of the browser doing something else, such as scrolling, double tap etc.
But seriously, don't take my word for it. Test it.
This is touch events rather than pointer events, but the behaviour is similar. You can modify the test if you don't believe me.
For the third time (might just be the charm), you contradict yourself, it's not that I don't trust you it's that you're internally inconsistent.
https://gist.github.com/cagerton/7948779 (disclaimer: proof of concept, etc. )