桌面端正常工作的Button移动端真机点击无响应问题排查求助
宝可梦搜索功能移动端点击无响应排查方案
- 先检查元素层级与可点击属性:打开移动端开发者工具的元素选择器,点击搜索按钮位置,确认选中的是目标按钮元素,不是其他覆盖的透明层;同时检查按钮的CSS属性
pointer-events是否被误设为none,该属性会让元素完全不响应任何交互事件。 - 校验按钮可点击区域尺寸:移动端交互规范要求可点击元素最小尺寸为48px * 48px,若适配时按钮尺寸设置过小,会出现手指点击无法命中元素的问题,可临时给按钮加个高亮边框验证实际点击区域。
- 修复JS代码已知问题:
你当前提供的代码存在两个易引发异常的问题:- 变量
targetPokemon未加let/const声明,会被隐式提升为全局变量,部分移动端浏览器的严格模式下会抛出异常阻断后续逻辑执行,补充声明即可。 - 未处理输入大小写与请求异常:宝可梦API要求传入的名称为小写,移动端输入法默认会首字母大写,会导致请求404;同时代码未加
catch错误捕获分支,请求失败时无任何反馈,会让用户误以为点击未触发。可参考以下方式修改代码:
function showPokemonSearchResult(){ let enteredPokemonName = document.getElementById("pokemonNameByUser").value; // 补充变量声明 + 输入转小写处理 const targetPokemon = `https://pokeapi.co/api/v2/pokemon/${enteredPokemonName.toLowerCase()}` console.log("target pokemon",targetPokemon) fetch(targetPokemon) .then(res => { if(res.ok){ // 原判断仅判断res是否存在,404/500状态下res也存在,需判断ok属性 console.log("Success"); return res.json() }else { throw new Error("请求失败") } }) .then(data =>{ let gotDivForPokemonSearchResult = document.getElementById("divForPokemonSearchResult"); gotDivForPokemonSearchResult.innerHTML = ` <h2> ${data.name}</h2><br> <img src=${data.sprites["front_default"]}></img> <img src=${data.sprites["back_default"]}></img> <p class="text2">Weight: ${data.weight}</p> <p class="text2">Heigth: ${data.height}</p> <p class="text2">Base experience: ${data["base_experience"]}</p> ` console.log(data.id) }) // 新增错误捕获 .catch(err => { console.error("查询失败:", err) // 可在此处添加用户提示,比如弹窗告知输入的宝可梦名称不存在 }) } - 变量
- 排查全局触摸事件冲突:如果项目中全局绑定了
touchstart/touchend事件,并且调用了e.preventDefault(),会默认阻止原生click事件触发,可临时注释相关全局事件验证是否是该问题。
内容的提问来源于stack exchange,提问作者DeanWinchester88
相关产品推荐
相关产品推荐

