From caf12721869a9efc7ca660e4f4b7943ad3eb4b44 Mon Sep 17 00:00:00 2001 From: Adam Bradley Date: Fri, 29 Aug 2014 23:35:07 -0500 Subject: [PATCH] fix(scroll): remove isContentEditable from ignoreScrollStart MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit If an element isContentEditable, do not ignoreScrollStart incase users are using contenteditable elements to scroll. This may have originally been put in because it disabled text selection, and moving the text cursor on touch. But this doesn’t seem to be the case anymore, so it may have been put in for platform versions we no longer support. Also fix the data-prevent-scroll dataset attribute. Closes #2091 --- js/angular/controller/sideMenuController.js | 2 +- js/utils/tap.js | 3 +-- test/unit/angular/directive/sideMenu.unit.js | 2 +- test/unit/utils/tap.unit.js | 4 ++-- 4 files changed, 5 insertions(+), 6 deletions(-) diff --git a/js/angular/controller/sideMenuController.js b/js/angular/controller/sideMenuController.js index 417ca3f401..780190461b 100644 --- a/js/angular/controller/sideMenuController.js +++ b/js/angular/controller/sideMenuController.js @@ -348,7 +348,7 @@ function($scope, $attrs, $ionicSideMenuDelegate, $ionicPlatform, $ionicBody) { !e.gesture.srcEvent.defaultPrevented && !e.target.tagName.match(/input|textarea|select|object|embed/i) && !e.target.isContentEditable && - !(e.target.dataset ? e.target.dataset.preventScroll : e.target.getAttribute('data-prevent-default') == 'true'); + !(e.target.dataset ? e.target.dataset.preventScroll : e.target.getAttribute('data-prevent-scroll') == 'true'); }; $scope.sideMenuContentTranslateX = 0; diff --git a/js/utils/tap.js b/js/utils/tap.js index a85634a36a..debe496a08 100644 --- a/js/utils/tap.js +++ b/js/utils/tap.js @@ -152,9 +152,8 @@ ionic.tap = { ignoreScrollStart: function(e) { return (e.defaultPrevented) || // defaultPrevented has been assigned by another component handling the event - (e.target.isContentEditable) || (/^(file|range)$/i).test(e.target.type) || - (e.target.dataset ? e.target.dataset.preventScroll : e.target.getAttribute('data-prevent-default')) == 'true' || // manually set within an elements attributes + (e.target.dataset ? e.target.dataset.preventScroll : e.target.getAttribute('data-prevent-scroll')) == 'true' || // manually set within an elements attributes (!!(/^(object|embed)$/i).test(e.target.tagName)) || // flash/movie/object touches should not try to scroll ionic.tap.isElementTapDisabled(e.target); // check if this element, or an ancestor, has `data-tap-disabled` attribute }, diff --git a/test/unit/angular/directive/sideMenu.unit.js b/test/unit/angular/directive/sideMenu.unit.js index 0a048f7605..46bd41d430 100644 --- a/test/unit/angular/directive/sideMenu.unit.js +++ b/test/unit/angular/directive/sideMenu.unit.js @@ -159,7 +159,7 @@ describe('Ionic Angular Side Menu', function() { e.target.dataset = undefined; e.target.getAttribute = function(val){ - return (val == 'data-prevent-default' ? 'true' : undefined); + return (val == 'data-prevent-scroll' ? 'true' : undefined); }; expect(ctrl.isDraggableTarget(e)).toBe(false); diff --git a/test/unit/utils/tap.unit.js b/test/unit/utils/tap.unit.js index d7b9196147..d2aa26f170 100644 --- a/test/unit/utils/tap.unit.js +++ b/test/unit/utils/tap.unit.js @@ -1129,11 +1129,11 @@ describe('Ionic Tap', function() { expect( ionic.tap.ignoreScrollStart(e) ).toEqual(true); }); - it('Should prevent scrolling if the browser doesnt support dataset but target has data-prevent-default attribute', function() { + it('Should prevent scrolling if the browser doesnt support dataset but target has data-prevent-scroll attribute', function() { var target = { tagName: 'div', getAttribute: function(val) { - if(val === 'data-prevent-default') { + if(val === 'data-prevent-scroll') { return 'true'; } }