在使用MUI框架的时候发现, onclick事件在电脑浏览器中可以正常触发, 但是在android浏览器上点击的时候, 出现了点击事件不触发的问题.
后来在网上找到了如下解决方法, 确实可以解决点击事件不触发的问题(这个解决方法在高版本手机上有问题, 详见后面的描述):
mui('body').on('tap', 'a', function () {
var str = this.onclick;
str = String(str);
/*
例如:onclick='alert("Hello")';
转换成的字符串内容大概是:
function click(event){
alert("Hello")
}
所以,需要做一些截取。
*/
var functionString = str.substr(28, str.length - 29);
// 执行就好了
eval(functionString);
});
但是, 上述方法在高版本(具体版本没有看, 目前主要是华为P20, MATE 20, 小米8SE等)都再次出现点击事件没效果的问题.
后来排查, 其实上述事件触发了, 但是在解析onclick字符串内容的时候, 格式发生了变化, 导致eval里面的字符串不正确.
所以更换了获取点击事件并执行的方法如下(需要jquery支持):
mui('body').on('tap', 'a', function () {
eval($(this).attr('onclick'));
});