详细问题描述
<nav class="mui-bar mui-bar-tab home_nav ">
<ul>
<li class="active">
<a id="homeTab" class="mui-tab-item mui-active" href="javascript:void(0)" data-href="home.html">
<svg class="icon" aria-hidden="true" style="font-size: 24px;">
<use xlink:href="#icon-shouyefill"></use>
</svg>
<p>首页</p>
</a>
</li>
......
</ul>
</nav>
mui('.home_nav').on('tap', 'mui-tab-item', function(e) {
});
重现步骤
点击SVG小图标触发事件时 “不定时”报错,mui.js 608行报错 ,(即有时候报错,有时候不报错)
Uncaught TypeError: Cannot call method 'contains' of undefined at js/mui.js:608
报错部分代码608:
if (~['click', 'tap', 'doubletap', 'longtap', 'hold'].indexOf(event) && (target.disabled || target.classList.contains('mui-disabled'))) {
break;
}
在608行加入console.log(target);调试发现不报错的情况下 target输出为 SVG标签,<svg class="icon" aria-hidden="true" style="font-size: 24px;"><use xlink:href="#icon-shouyefill"></use></svg>,
报错时 target输出为 SVGElementInstance object.
望解决
联系方式
273289595
15003999275
j***@foxmail.com (作者)
这样改我试过,报错倒是不报了,但是tap事件没有正常触发。因为没能获取到正常的dom元素,不能按正常的dom结构一直向父级找到对应绑定的事件。SVGElementInstance object 只target.parentNode向上找一层,就返回了。
2017-02-10 17:57