vue fastclick 导致 a链接、click事件点击两次才生效

独自空忆成欢 提交于 2020-01-16 00:16:14

vue 引入 fastclick插件后,有些a链接或者click事件需要点击两次,百度也搜不到,就只能看源码。。

找到node_modules 依赖包下面的fastclick—lib—fastclick.js文件

并找到 needsClick 方法

FastClick.prototype.needsClick = function(target) {

并在 switch 中写下判断条件

switch (target.nodeName.toLowerCase()) {
		// Don't send a synthetic click to disabled inputs (issue #62)
		case 'button':
		case 'select':
		case 'textarea':
			if (target.disabled) {
				return true;
			}

			break;
		case 'input':

			// File inputs need real clicks on iOS 6 due to a browser bug (issue #68)
			if ((deviceIsIOS && target.type === 'file') || target.disabled) {
				return true;
			}

			break;
		case 'label':
		case 'iframe': // iOS8 homescreen apps can prevent events bubbling into frames
		case 'video':
			return true;
		
		// **************************************************
		// 添加的click事件的过滤对象
		// 这里写上 你要 不阻止冒泡的元素名就可以了
		// **************************************************
		case 'div':
		case 'img':
		case 'p':
		case 'span':
		case 'a':
		case 'h5':
			return true;
		}

这样就不会被阻止冒泡了

注意:这样改了最好不要用 touchstart 和 touchend ,因为这样滑动也会触发这两个事件

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!