* [html5] fix click.
Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/5bc58516 Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/5bc58516 Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/5bc58516 Branch: refs/heads/0.16-dev Commit: 5bc585168ec5586901e1865a738ac521ec8a861b Parents: 768b13a Author: MrRaindrop <tekk...@gmail.com> Authored: Thu Aug 24 21:37:14 2017 +0800 Committer: MrRaindrop <tekk...@gmail.com> Committed: Thu Aug 24 21:37:14 2017 +0800 ---------------------------------------------------------------------- build/karma.vue.conf.js | 1 + html5/render/vue/core/node.js | 2 +- html5/render/vue/env/event-manager.js | 17 +++++++++-------- html5/render/vue/lib/gesture.js | 2 +- 4 files changed, 12 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5bc58516/build/karma.vue.conf.js ---------------------------------------------------------------------- diff --git a/build/karma.vue.conf.js b/build/karma.vue.conf.js index 6220025..693c241 100644 --- a/build/karma.vue.conf.js +++ b/build/karma.vue.conf.js @@ -74,6 +74,7 @@ module.exports = function (config) { '../html5/test/render/vue/!(utils|core)/*.js' ], exclude: [ + '../html5/test/render/vue/core/node.js', '../html5/test/render/vue/helper/*.js', '../html5/test/render/vue/vender/**/*.js', '../html5/test/render/vue/data/**/*.js' http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5bc58516/html5/render/vue/core/node.js ---------------------------------------------------------------------- diff --git a/html5/render/vue/core/node.js b/html5/render/vue/core/node.js index caf4230..d38cafd 100644 --- a/html5/render/vue/core/node.js +++ b/html5/render/vue/core/node.js @@ -85,7 +85,7 @@ export function createEventMap (context, ...events) { */ let vm = context while (vm) { - const ons = getListeners(vm.$vnode, listenTo) + const ons = getListeners(vm._vnode || vm.$vnode, listenTo) const len = ons.length if (len > 0) { let idx = 0 http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5bc58516/html5/render/vue/env/event-manager.js ---------------------------------------------------------------------- diff --git a/html5/render/vue/env/event-manager.js b/html5/render/vue/env/event-manager.js index 7a074d5..3ecf618 100644 --- a/html5/render/vue/env/event-manager.js +++ b/html5/render/vue/env/event-manager.js @@ -88,25 +88,26 @@ function _init (doc) { const el = e.target let vm = el.__vue__ let disposed = false - + let evtName = e.type /** * take full control of redirection of <a> element. */ - if (evt === 'click') { + if (evtName === 'click') { e.preventDefault() + return } - if (evt === 'tap' && evt._for !== 'weex') { + if (evtName === 'tap' && e._for !== 'weex') { return } - else if (evt === 'tap') { - evt = 'click' + else if (evtName === 'tap') { + evtName = 'click' } while (vm) { - const vnode = vm.$vnode || vm._vnode + const vnode = vm._vnode || vm.$vnode const elm = vm.$el - const ons = getListeners(vnode, evt) + const ons = getListeners(vnode, evtName) const len = ons && ons.length if (len > 0) { @@ -129,7 +130,7 @@ function _init (doc) { * NOTE: if target==='_blank' then do no jumping and dispatch the * click event to document.body for further disposing. */ - if (evt === 'click' && isANode(elm)) { + if (evtName === 'click' && isANode(elm)) { const href = elm.getAttribute('href') const target = elm.getAttribute('target') disposed = true http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/5bc58516/html5/render/vue/lib/gesture.js ---------------------------------------------------------------------- diff --git a/html5/render/vue/lib/gesture.js b/html5/render/vue/lib/gesture.js index 62ad226..5294cb2 100644 --- a/html5/render/vue/lib/gesture.js +++ b/html5/render/vue/lib/gesture.js @@ -70,7 +70,7 @@ function getCommonAncestor(el1, el2) { */ function fireEvent(element, type, extra) { var event = doc.createEvent('HTMLEvents') - event.initEvent(type, false, true) + event.initEvent(type, true, true) if (typeof extra === 'object') { for (var p in extra) {