* [html5] distinguish gesture events with what generated by other libs.
Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/22f65ee0 Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/22f65ee0 Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/22f65ee0 Branch: refs/heads/0.16-dev Commit: 22f65ee0686a8a5fb5b8ee2b918a6e26c17ad628 Parents: 1bc4a46 Author: MrRaindrop <tekk...@gmail.com> Authored: Fri Aug 4 15:42:53 2017 +0800 Committer: MrRaindrop <tekk...@gmail.com> Committed: Fri Aug 4 15:42:53 2017 +0800 ---------------------------------------------------------------------- html5/render/vue/config.js | 11 ++++++++++- html5/render/vue/core/node.js | 12 +++++++++--- html5/render/vue/lib/gesture.js | 6 ++++++ 3 files changed, 25 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/22f65ee0/html5/render/vue/config.js ---------------------------------------------------------------------- diff --git a/html5/render/vue/config.js b/html5/render/vue/config.js index 86c2489..d995803 100644 --- a/html5/render/vue/config.js +++ b/html5/render/vue/config.js @@ -17,5 +17,14 @@ * under the License. */ export default { - scrollableTypes: ['scroller', 'list', 'waterfall'] + scrollableTypes: ['scroller', 'list', 'waterfall'], + gestureEvents: [ + 'longpress', + 'panstart', + 'panmove', + 'panend', + 'swipe', + 'longpress', + 'tap' + ] } http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/22f65ee0/html5/render/vue/core/node.js ---------------------------------------------------------------------- diff --git a/html5/render/vue/core/node.js b/html5/render/vue/core/node.js index 235fbf9..002c8e7 100644 --- a/html5/render/vue/core/node.js +++ b/html5/render/vue/core/node.js @@ -18,6 +18,7 @@ */ import { isArray, createEvent } from '../utils' +import config from '../config' /** * remove text nodes in the nodes array. @@ -80,6 +81,7 @@ function isInANode (el) { */ export function createEventMap (context, ...extras) { const eventMap = {} + const gestureEvents = config.gestureEvents /** * Bind some original type event to your specified type event handler. * e.g. bind 'tap' event to 'click' event listener: bindFunc('tap')('click'). @@ -95,12 +97,16 @@ export function createEventMap (context, ...extras) { else if (typeof listenTo === 'string') { handler = function (e) { /** - * allow original bubbling. - * use '_triggered' to control actural bubbling. + * 1. use '_triggered' to control actural bubbling (allow original bubbling). + * 2. use '_for' to distinguish from gesture events generated by other + * not-vue-render librarys. */ - if (e._triggered) { + if (e._triggered + || gestureEvents.indexOf(originalType) > -1 + && e._for !== 'weex') { return } + // but should trigger the closest parent which has bound the // event handler. let vm = context http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/22f65ee0/html5/render/vue/lib/gesture.js ---------------------------------------------------------------------- diff --git a/html5/render/vue/lib/gesture.js b/html5/render/vue/lib/gesture.js index 7ed0592..62ad226 100644 --- a/html5/render/vue/lib/gesture.js +++ b/html5/render/vue/lib/gesture.js @@ -78,6 +78,12 @@ function fireEvent(element, type, extra) { } } + /** + * A flag to distinguish with other events with the same name generated + * by another library in the same page. + */ + event._for = 'weex' + element.dispatchEvent(event) }