gpt4 book ai didi

javascript - 从 Android Webview 加载一个 javascript 方法

转载 作者:太空狗 更新时间:2023-10-29 16:36:26 26 4
gpt4 key购买 nike

我正在尝试使用 HighCharts 在 Android WebView 中呈现图表。

我的应用程序的功能应该很简单:- 加载 HTML 页面和外部(但本地)css 和 js 文件- 从应用程序的 Java 部分加载数据- 使用先前加载的数据作为参数调用 javascript 函数

我通过激活 Javascript 来设置我的 WebView :

mWebView.getSettings().setJavaScriptEnabled(true);

还可以通过设置 WebClient 来捕获 javascript 的控制台消息:

mWebView.setWebChromeClient(new WebChromeClient() {
public boolean onConsoleMessage(ConsoleMessage cm) {
Log.d(TAG, cm.message() + " -- From line "
+ cm.lineNumber() + " of "
+ cm.sourceId() );
return true;
}

});

这是我的 HTML 页面:

<!DOCTYPE html>
<html lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="style.css" />
<title>Chart</title>
<script src="jquery.js"></script>
</head>

<body>
<script src="highstock.js"></script>
<script src="exporting.js"></script>
<script language="javascript">
function plot() {
console.log("Hello !");
}
</script>
<div id="container" style="height: 100%; width: 100%"></div>
</body>
</html>

我通过调用

从应用程序的 Assets 中加载此页面
mWebView.loadUrl("file:///android_asset/page.html");

我的外部 CSS 文件似乎已被读取,我想外部 JS 文件也已正确加载

我到处都读到我可以通过调用随时调用我的javascript方法

mWebView.loadUrl("javascript:plot()");

但是,我总是得到错误

Uncaught ReferenceError: plot is not defined -- From line 1 of null

有什么我可能忘记的吗?请注意,我加载我的页面并在 loadUrl 调用后立即调用 javascript 方法。

谢谢!

最佳答案

好的,很抱歉耽误您的时间。我花了好几个小时寻找答案,然后在发布问题后的 15 分钟内我找到了解决方案。

问题似乎是对 loadUrl 的两次连续调用。也许当我已经在调用 javascript 函数时页面还没有正确加载。

我像这样在WebView上添加了一个负载监听器

mWebView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
if (url.equals("file:///android_asset/page.html")) {
mWebView.loadUrl("javascript:plot();");
}
}
});

这样我只在页面完全加载时才调用 javascript 方法。现在它在每次调用时都能正常工作。

再次感谢您的关注!

关于javascript - 从 Android Webview 加载一个 javascript 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27709995/

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