History

Update FastClick

Thibaut committed 12 years ago

Commit 3fd686a1 parent 465a1721 file · +33 −2Browse files

Unified · Split

assets/javascripts/vendor/fastclick.js+33−2
@@ -1,7 +1,7 @@
1/**1/**
2 * @preserve FastClick: polyfill to remove click delays on browsers with touch UIs.2 * @preserve FastClick: polyfill to remove click delays on browsers with touch UIs.
3 *3 *
4 * @version 1.0.24 * @version 1.0.3
5 * @codingstandard ftlabs-jsv25 * @codingstandard ftlabs-jsv2
6 * @copyright The Financial Times Limited [All Rights Reserved]6 * @copyright The Financial Times Limited [All Rights Reserved]
7 * @license MIT License (see LICENSE.txt)7 * @license MIT License (see LICENSE.txt)
@@ -197,6 +197,12 @@ var deviceIsIOS4 = deviceIsIOS && (/OS 4_\d(_\d)?/).test(navigator.userAgent); · 189 unmodified lines
197 */197 */
198var deviceIsIOSWithBadTarget = deviceIsIOS && (/OS ([6-9]|\d{2})_\d/).test(navigator.userAgent);198var deviceIsIOSWithBadTarget = deviceIsIOS && (/OS ([6-9]|\d{2})_\d/).test(navigator.userAgent);
199 199
200/**
201 * BlackBerry requires exceptions.
202 *
203 * @type boolean
204 */
205var deviceIsBlackBerry10 = navigator.userAgent.indexOf('BB10') > 0;
200 206
201/**207/**
202 * Determine whether a given element requires a native click.208 * Determine whether a given element requires a native click.
@@ -401,7 +407,10 @@ FastClick.prototype.onTouchStart = function(event) { · 198 unmodified lines
401 // with the same identifier as the touch event that previously triggered the click that triggered the alert.407 // with the same identifier as the touch event that previously triggered the click that triggered the alert.
402 // Sadly, there is an issue on iOS 4 that causes some normal touch events to have the same identifier as an408 // Sadly, there is an issue on iOS 4 that causes some normal touch events to have the same identifier as an
403 // immediately preceeding touch event (issue #52), so this fix is unavailable on that platform.409 // immediately preceeding touch event (issue #52), so this fix is unavailable on that platform.
404 if (touch.identifier === this.lastTouchIdentifier) {410 // Issue 120: touch.identifier is 0 when Chrome dev tools 'Emulate touch events' is set with an iOS device UA string,
411 // which causes all touch events to be ignored. As this block only applies to iOS, and iOS identifiers are always long,
412 // random integers, it's safe to to continue if the identifier is 0 here.
413 if (touch.identifier && touch.identifier === this.lastTouchIdentifier) {
405 event.preventDefault();414 event.preventDefault();
406 return false;415 return false;
407 }416 }
@@ -723,6 +732,7 @@ FastClick.notNeeded = function(layer) { · 315 unmodified lines
723 'use strict';732 'use strict';
724 var metaViewport;733 var metaViewport;
725 var chromeVersion;734 var chromeVersion;
735 var blackberryVersion;
726 736
727 // Devices that don't support touch don't need FastClick737 // Devices that don't support touch don't need FastClick
728 if (typeof window.ontouchstart === 'undefined') {738 if (typeof window.ontouchstart === 'undefined') {
@@ -754,6 +764,27 @@ FastClick.notNeeded = function(layer) { · 25 unmodified lines
754 }764 }
755 }765 }
756 766
767 if (deviceIsBlackBerry10) {
768 blackberryVersion = navigator.userAgent.match(/Version\/([0-9]*)\.([0-9]*)/);
769
770 // BlackBerry 10.3+ does not require Fastclick library.
771 // https://github.com/ftlabs/fastclick/issues/251
772 if (blackberryVersion[1] >= 10 && blackberryVersion[2] >= 3) {
773 metaViewport = document.querySelector('meta[name=viewport]');
774
775 if (metaViewport) {
776 // user-scalable=no eliminates click delay.
777 if (metaViewport.content.indexOf('user-scalable=no') !== -1) {
778 return true;
779 }
780 // width=device-width (or less than device-width) eliminates click delay.
781 if (document.documentElement.scrollWidth <= window.outerWidth) {
782 return true;
783 }
784 }
785 }
786 }
787
757 // IE10 with -ms-touch-action: none, which disables double-tap-to-zoom (issue #97)788 // IE10 with -ms-touch-action: none, which disables double-tap-to-zoom (issue #97)
758 if (layer.style.msTouchAction === 'none') {789 if (layer.style.msTouchAction === 'none') {
759 return true;790 return true;