Android onBackPressed中调用JS匹配所有id含sdf_前缀元素并触发点击问题
解决方案
你只需要修改webView.loadUrl中的JavaScript逻辑即可,修改后的完整代码如下:
@Override public void onBackPressed() { if (Config.EXIT_APP_BY_BACK_BUTTON_ALWAYS) { webView.getSettings().setJavaScriptEnabled(true); webView.loadUrl("javascript:(function(){"+ // 匹配所有id前缀为sdf_的元素 "var targetList = document.querySelectorAll('[id^=\"sdf_\"]');"+ // 遍历所有匹配元素逐个触发点击 "for(var i = 0; i < targetList.length; i++){"+ " var event = document.createEvent('HTMLEvents');"+ " event.initEvent('click', true, true);"+ " targetList[i].dispatchEvent(event);"+ "}"+ "})()"); } }
逻辑说明
- 用CSS属性选择器
[id^="sdf_"]实现前缀匹配,querySelectorAll会返回所有符合条件的DOM元素集合 - 如果你不需要兼容特别老旧的浏览器版本,可以简化JS逻辑,直接调用元素自带的
click()方法,代码更简洁:document.querySelectorAll('[id^="sdf_"]').forEach(item => item.click())
内容的提问来源于stack exchange,提问作者Jarosław Król
相关产品推荐
相关产品推荐

