Android WebView调用ES模块内JS函数失败问题求助
解决Android WebView无法调用ES模块内JS函数的问题
问题核心
ES模块(type="module"的脚本块)拥有独立作用域,模块内定义的函数默认不会暴露到全局window对象。Android WebView通过evaluateJavascript或loadUrl调用JS函数时,是在全局作用域查找目标函数,因此找不到模块内的onPageSelected。
可行解决方案
将模块内的目标函数挂载到全局window对象上,既保留函数对模块内3D变量的访问权限,又能让WebView在全局作用域找到它。
修改你的ES模块脚本:
// 模块内原有的函数定义 function onPageSelected(page) { // 此处可正常操作ThreeJS相关的3D渲染变量 console.log("当前选中页面:", page); // 你的3D场景逻辑代码... } // 将函数挂载到全局window对象 window.onPageSelected = onPageSelected;
额外注意事项
- 确保WebView的
javascriptEnabled已设置为true(你的现有配置已满足)。 - 等待页面完全加载后再调用JS函数:可通过
WebViewClient的onPageFinished方法确认页面加载完成,避免因函数未完成挂载导致调用失败。
内容的提问来源于stack exchange,提问作者Felipe Ribeiro R. Magalhaes
相关产品推荐
相关产品推荐

