From bfd01a71ea5a882fef8598813b3070a8f1345fb4 Mon Sep 17 00:00:00 2001 From: Tom Mettam Date: Tue, 17 Nov 2015 15:55:43 +0000 Subject: [PATCH 1/2] Prevent click events from firing twice on Windows Phone (tested on 8.1 and 10). --- js/utils/tap.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/js/utils/tap.js b/js/utils/tap.js index c98dc7fe072..93ce727036c 100644 --- a/js/utils/tap.js +++ b/js/utils/tap.js @@ -236,6 +236,9 @@ ionic.tap = { }, requiresNativeClick: function(ele) { + if (ionic.Platform.isWindowsPhone && (ele.tagName == 'A' || ele.tagName == 'BUTTON' || ele.hasAttribute('ng-click') || (ele.tagName == 'INPUT' && (ele.type == 'button' || ele.type == 'submit')))) { + return true; //Windows Phone edge case, prevent ng-click (and similar) events from firing twice on this platform + } if (!ele || ele.disabled || (/^(file|range)$/i).test(ele.type) || (/^(object|video)$/i).test(ele.tagName) || ionic.tap.isLabelContainingFileInput(ele)) { return true; } From a538035b461e18df1ac3fb89b788933ff184e2e9 Mon Sep 17 00:00:00 2001 From: Tom Mettam Date: Tue, 17 Nov 2015 17:25:36 +0000 Subject: [PATCH 2/2] Was failing on !WindowsPhone. Forgot this is a function :) --- js/utils/tap.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/utils/tap.js b/js/utils/tap.js index 93ce727036c..ba87873cafb 100644 --- a/js/utils/tap.js +++ b/js/utils/tap.js @@ -236,7 +236,7 @@ ionic.tap = { }, requiresNativeClick: function(ele) { - if (ionic.Platform.isWindowsPhone && (ele.tagName == 'A' || ele.tagName == 'BUTTON' || ele.hasAttribute('ng-click') || (ele.tagName == 'INPUT' && (ele.type == 'button' || ele.type == 'submit')))) { + if (ionic.Platform.isWindowsPhone() && (ele.tagName == 'A' || ele.tagName == 'BUTTON' || ele.hasAttribute('ng-click') || (ele.tagName == 'INPUT' && (ele.type == 'button' || ele.type == 'submit')))) { return true; //Windows Phone edge case, prevent ng-click (and similar) events from firing twice on this platform } if (!ele || ele.disabled || (/^(file|range)$/i).test(ele.type) || (/^(object|video)$/i).test(ele.tagName) || ionic.tap.isLabelContainingFileInput(ele)) {