Disable on iOS 9.3+ #450

Open
pornel opened this Issue Jan 11, 2016 · 12 comments

Projects

None yet
@pornel
Contributor
pornel commented Jan 11, 2016

Hurray! https://developer.apple.com/library/prerelease/mac/releasenotes/General/WhatsNewInSafari/Articles/Safari_9_1.html#//apple_ref/doc/uid/TP40014305-CH10-SW1

On Safari for iOS, the 350 ms wait time to detect a second tap has been removed to create a “fast-tap” response. This is enabled for pages that declare a viewport with either width=device-width or user-scalable=no. Authors can also opt in to fast-tap behavior on specific elements by using the CSS touch-action property, using the manipulation value.

@nicooprat

🎉!

@jjhampton

Does anyone have a resource that explains the correlation between versions of Safari and versions of iOS? I'm assuming that Safari v. 9.1 will be rolled out w/ iOS 9.3 updates?

@madskonradsen

Kind of duplicate of #444 , also, wouldn't it be better to establish some kind of feature detection instead of user-agent-sniffing?

@mgol
mgol commented Jan 30, 2016

wouldn't it be better to establish some kind of feature detection instead of user-agent-sniffing?

It would be better but I don't think it's fully possible here.

@samuelmburu

I'm new to this thread, but I was scanning through the FastClick code we should be able to do this with the following change.


Inside FastClick.notNeeded function we would need to add the following:

        if (deviceIsIOS && typeof layer.style.touchAction !== "undefined") {
            return true;
        }

Any thoughts?

@mgol
mgol commented Feb 23, 2016

@samuelmburu I think it's more nuanced. The touchAction path is already handled by these lines so current FastClick should already disable its hacks on iOS 9.3 devices with touchAction set. The other heuristics are the same as Chrome uses so these lines should be executed on iOS 9.3+ as well, not just Chrome for Android. This seems to me to be the only change that's needed.

I'm not a FastClick contributor, though, that's just my understanding of the code. :)

@michielvaneerd

Unfortunately the 300ms delay is still present when when the app is added to the homescreen and has the following meta tag:

<meta name="apple-mobile-web-app-capable" content="yes">

So you have to also take window.navigator.standalone into account - if it is true, don't disable fastclick.

@nihilus
nihilus commented Jun 1, 2016

Yes it is still there in UIWebview on 9.3.x

@HipsterZipster

@nihilus When you say the delay is still there in UIWebView on 9.3.x, does that mean that it will be there in any Cordova apps as well? Is Apple's Release notes ONLY speaking about Safari and not the actual webview that safari is using?

@nihilus
nihilus commented Jun 21, 2016

@HipsterZipster: That's correct. It is there in Cordova apps unless you use the flawed wkwebview.

@andrewmichaelsmith

@nihilus Are you able to elaborae on what's flawed about the wkwebview?

@PierBover

I'm not @nihilus but although the performance of WkWebView has been greatly increased, it's really full of bugs.

Check the Webkit issues. There are bugs that have been there for 3 or more years. I've reported a few of those myself and never really received an answer. Apple is crippling HTML5 app development.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment