gpt4 book ai didi

javascript - 从 Android 调用 JavaScript

转载 作者:行者123 更新时间:2023-11-29 16:34:12 25 4
gpt4 key购买 nike

我无法从 Android 中调用基本的 JavaScript 函数。当我从 this tutorial 克隆存储库时,然后将其剥离,我能够使代码正常运行。然而,当我尝试创建自己的新项目时,我没有成功。

我引用了以下帖子,似乎也在做同样的事情,但无济于事。这些方法之间没有明显的区别,所以我觉得这些文件之外可能存在我遗漏的依赖项?

Android Calling JavaScript functions in WebView

Run javascript code in Webview

我想知道我是否在某处遗漏了一些微妙的东西。

基本上,我只是试图通过调用在其自己的文件中定义的 JavaScript 函数来将任何输出获取到控制台。项目结构如下:

main
- assets
- index.html
- sketch.js

- java
- com.mypackage
- MainActivity.java

我有一个文件sketch.js,里面有以下函数

function hello() {
console.log("hello world");
}

还有一个包含以下代码的index.html文件

<!DOCTYPE html>
<html>
<head>
<script src="sketch.js" type="text/javascript"></script>

</head>
<body>
<canvas></canvas>
</body>
</html>

然后从我的 Activity 类中得到以下 Java 代码

webView = (WebView) findViewById(R.id.webView);
webView.setWebChromeClient(new WebChromeClient());
webView.getSettings().setJavaScriptEnabled(true);

webView.loadUrl("file:///android_asset/index.html");

webView.evaluateJavascript("javascript:hello();", null);
webView.evaluateJavascript("console.log('Hello world 2');", null);

在 Android Studio 的控制台中我看到了

[INFO:CONSOLE(1)] "Uncaught ReferenceError: hello is not defined", source:  (1)
I/chromium: [INFO:CONSOLE(1)] "Hello world 2", source: (1)

如何修复此代码,以便能够调用单独文件中的简单 JavaScript 函数 hello()

最佳答案

根据 CW answer ,

You need to wait until your page is loaded

private void helloJs(){
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
webView.evaluateJavascript("javascript:hello();", null);
} else {
webView.loadUrl("javascript:hello();");
}
}

webView.setWebViewClient(new WebViewClient() {
public void onPageFinished(WebView view, String url) {
helloJs();
}
});

关于javascript - 从 Android 调用 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53028496/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com