You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 08:02:42