如何解决WebviewController.evaluateJavascriptjsStr的未定义错误
颤动:1.20.1
webview_flutter:0.3.22 + 1
android api级别30
1。我使用WebView窗口小部件打开一个我部署在计算机上的URL,
2.flutter应用程序成功打开我的网站,
3.按一个小部件按钮,通过WebViewController.evaluateJavascript()在我的Web前端源代码中调用js函数。
最后,我收到此错误:Uncaught ReferenceError:未定义threeScene。
我不太清楚WebViewController.evaluateJavascript()的工作方式,看起来它无法获取Web上下文来运行Web JS代码。我确定threeScene对象已在全局中初始化。
有人知道出了什么问题吗?
ts:我确定ts代码已编译为web index.html引用的build_main.js
let threeScene: ThreeScene;
window.onload = () => {
threeScene = new ThreeScene();
threeScene.Init();
};
html:
<!-- index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="Cache-Control" content="no-cache,no-store,must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />
<title>Web3D</title>
</head>
<body>
<div id="hc"></div>
<script src="build_main.js"></script></body>
</html>
<style>
html,body {
overflow: hidden;
width : 100%;
height : 100%;
margin : 0;
padding : 0;
}
</style>
飞镖:
const String javaStr = 'threeScene.CreateFrameH()';
...//omit
body: Builder(builder: (BuildContext context) {
...
return WebView(
initialUrl: 'http://10.0.2.2:8081/',javascriptMode: JavascriptMode.unrestricted,onWebViewCreated: (WebViewController webViewController) {
_controller.complete(webViewController);
},...//omit
floatingActionButton: favoriteButton(),);
}
Widget favoriteButton() {
...//omit
onPressed: (){
_controller.future.then((wc) => {
wc.evaluateJavascript(javaStr).then((result) => {setState(() {})})
});
...//omit
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。