H5在手机上点击没反应,怎么调试?
我用 React 写了个按钮,在电脑浏览器里点得好好的,但放到手机微信里打开就点不动了,试过加 cursor:pointer 也没用。是不是事件绑定有问题?还是移动端要特殊处理?
代码很简单,就是个普通的 onClick:
const MyButton = () => {
const handleClick = () => {
console.log('clicked!');
alert('hello');
};
return (
<button onClick={handleClick} style={{ padding: '12px', fontSize: '16px' }}>
点我试试
</button>
);
};
真机测试时完全没反应,控制台也看不到 log,这咋整?
先说原因:移动端浏览器有点击延迟(300ms),而且有些场景下click事件确实会失效,特别是微信环境。cursor:pointer对移动端完全没用,那个是给PC鼠标用的。
解决方案很简单,先试试在CSS里加上:
touch-action: manipulation 可以消除300ms延迟,-webkit-tap-highlight-color: transparent 是去掉移动端点击时的灰色背景,这个很多余而且影响体验。
另外检查一下你的viewport设置对不对:
user-scalable=no 配合 initial-scale=1 能解决大部分点击问题。
如果还不行,可以试试用 onTouchStart 代替 onClick,不过正常来说React的onClick在移动端应该能工作。微信里有时候有各种奇奇怪怪的问题,你也可以试试在按钮外层包一层 div 然后用 onClick 试试。
还有一种情况是你检查一下是不是有其他元素把按钮遮挡住了,z-index的问题在移动端也很常见。