-
Notifications
You must be signed in to change notification settings - Fork 27.5k
ng-keypress does not work on Google Chrome Android browsers #5298
Comments
Seems to work on my android 4.1.2's webview |
Hi, Thanks! |
@evgenyneu what device are you seeing this with? Do you see an initial keypress feedback but not subsequent ones? Are you using a different input method like Swype? I don't have a very good testing environment to really dig into what's happening at this second, but for me I'm seeing the updated value each touch (with native input method) and on the initial touch (with swype) |
@caitlin: The problem seems the be when using Chrome on Android, not the On Thu, Dec 5, 2013 at 3:33 PM, Caitlin Potter notifications@git.luolix.topwrote:
|
I've tested both, as the original issue said it occurred in both --- Both with webkit 534 in the UA string edit: interestingly with 537 it doesn't work as reported, hmm. I can try to figure out what event it is emitting. It would be interesting to see if using ngTouch solves the issue, as well The expression doesn't seem to be evaluated for any of the ngEventDirs events, with or without ngTouch :( I don't think I"m going to figure out exactly why not tonight though, I'll look at it tomorrow if nobody else has found it |
@caitp I am seeing this issue on Samsung Galaxy Note III and HTC Velocity 4G. There is no initial or subsequent feedback. Nothing at all. I am not using different input methods, using the default. |
@caitp ng-keypress does work on stock Android browser on Android 4.0.3 for me. But not in Google Chrome on the same device. On Samsung Android 4.3 it does not work neither on stock nor Chrome. |
I can confirm that this problem is also occurring in the new Chrome 30 based WebView on Android devices running 4.4 (KitKat). Tested using angular version 1.2.0 and 1.2.3. |
Yeah as I said, builds using older versions of "webkit" (was chrome still webkit or did it already fork in 534?) it seems to work (for me), but after updating Chrome I am seeing your problem... I'm going to investigate that a bit further today, because it appears that similar issues have popped up on stack overflow and rietveld over the past year |
https://gist.github.com/caitp/1f40ff2c3163ecb00d8a I started a gist with links to test cases yesterday... So the Angular 1.2.4 test (not using ng-model) provides feedback (for me) for focus, blur, keyup, keydown, input, compositionstart, compositionupdate (but never compositionend, interestingly) --- I am not getting keypress, which would account for this bug (I don't think I'm getting it in jQuery either...) So, there are two problems, 1) is compositionend never appearing, and 2 is the apparent inability to receive keypress edit I actually do see compositionend very rarely (but I'm not using a CJK IME, but Swype is very buggy and this probably explains a lot of bugs I see using it :z) --- I never see any composition events without Swype, so whew. But yeah, no keypresses, only keydown/keyup/input |
With the most recent addition to those tests, http://plnkr.co/edit/RJykPShOHSr0nUNjXRRW?p=preview, it appears that even with ng-model, most of these events are being triggered (once again, never getting So... I don't think emulating the keypress event is a very good idea... but maybe your own app could do that, if it needs to... Might be worth opening an issue on blink rietveld though maybe |
Hey good news, I think I have a solution that might actually work! http://plnkr.co/edit/euPnjrLk918G31aTDPjN?p=preview In testing on my Nexus, with and without Swype, I get pretty good results. But it would be cool if someone could try this with a CJK IME just so that I can be sure it doesn't break international input. I'll submit a PR for this, but I'm not totally sure how to write an automated test for this. |
It appears that in current versions of Chrome for Android, and now with KitKat replacing the native browser, that too, that the onkeypress event does not fire at all. Does this fit everyone else's findings? |
It's being suggested to use 'beforeinput' event instead of keypress. Newer versions of android (I believe starting 4.4.2) are dropping keypress event as this event is getting deprecated. See here: http://www.w3.org/TR/DOM-Level-3-Events/#event-type-keypress. So my guess is that android just chose not to support it anymore. |
Well 'beforeinput' is not supported or doesn't work in 4.4.2 WebView. |
@petebacondarwin I don't think this is in the scope of ngTouch. |
Hi, ng-keypress directive does not fire on Google Chrome Android browsers.
Demo: http://plnkr.co/edit/hmCFceDC3CwMbci5SWCe?p=preview
Tested Google Chrome versions 28, 29 and 31 on Android 4.0.3 and 4.3.
AngularJS version is 1.2.3
Note: Directive ng-keydown works. Older stock Android browser Chrome v11 works as well.
Thank you
The text was updated successfully, but these errors were encountered: