- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试将数据加载到 android webview 中使用
webview.loadDataWithBaseURL("", htmlcontent, "text/html", null, "");
一个方法从填充 html 数据的 StringBuilder
返回 htmlContent。
我启用了 javascript 并设置了 webChromeClient 如下
webview.getSettings().setJavaScriptEnabled(true);
webview.setWebChromeClient(new WebChromeClient());
webview.addJavascriptInterface(new JSClass(), "Android");
我的 javascript 接口(interface):
class JSClass {
public void getHTMLContent(String html)
{
Log.i(Global.TAG, "HTMLContentReceived: "+html);
}
}
和我在 html 页面中的 javascript:
<script type="text/javascript">
var ele = document.getElementsByClassName('test');
for(var i=0;i<ele.length;i++){
ele[i].onclick = function(){
window.Android.getHTMLContent(this.innerHTML);
}
}
</script>
但不知何故 javascript 没有返回任何值。它适用于 loadData(url),其中 url 是 Assets 文件夹中的一个简单网页
请帮忙提前致谢
最佳答案
您没有任何可使用的 baseURL,因为您正在加载动态生成的 HTML。因此 webview.loadData(htmlcontent, "text/html", null);
应该绰绰有余。
Javascripts 不会在 Java 代码中抛出任何异常。请记住,JS 不像 Java 代码那样类型安全/严格......我的做法是在敏感的 Javascript 调用之间放置日志,以查看该行是否通过并检查值。由于您没有提供 HTML,我将设置 WebChomeClient 并覆盖 onConsoleMessage :
webview.setWebChromeClient(new MyChromeClient());
private class MyChromeClient extends WebChromeClient {
@Override
public boolean onConsoleMessage(ConsoleMessage consoleMessage) {
String message = consoleMessage.message() + " -- line " + consoleMessage.lineNumber();
switch (consoleMessage.messageLevel()) {
case ERROR:
logErrorMessage(message);
break;
default:
logInfoMessage(message);
break;
}
return true;
}
private void logInfoMessage(String message) {
Log.i("JSTag", message);
}
private void logErrorMessage(String message) {
Log.e("JSTag", message);
}
}
然后您可以从您的 JavaScript 调用例如:console.log('check my value:' + (ele != null))
。关于此的更多信息 here .
看你的JavaScript代码,我不明白this.innerHTML
是什么意思。
关于javascript - android webview javascript 不适用于 loadDataWithBaseUrl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17206359/
我正在使用 webview 在屏幕上显示 html 页面。我的 html 页面包含图像标签,其中所有图像都存储在具有子文件夹的 android 的 asset 文件夹中 assets/userfile
我正在使用来自字符串的 loadDataWithBaseURL 在 Web View 中加载数据。我想实现一个监听器,它会在数据完全加载时告诉我,以便我可以继续我的代码。 我搜索了很多,但找不到任何相
我有一个从 ATOM Feed 解析的 HTML 数据字符串。显然里面有对图像的引用,我想在 WebView 上显示这些图像。但是使用 webview.loadDataWithBaseURL("",
问题描述 我正在尝试通过调用 loadDataWithBaseURL 方法并向其传递嵌入数据来播放 SWF 视频。但是视频没有开始播放,只是显示白屏。我做错了什么吗? 源代码 protected vo
将自定义字体设置为 html 页面并使用 loadDataWithBaseURL 加载 html 数据时,粗体标记将被忽略。我的代码如下: webView.loadDataWithBaseURL(""
在我的本地存储中,我有以下文件夹/data/data/com.test.testapp/files/1/images 并且存在以下文件。/data/data/com.test.testapp/file
我与这个问题斗争了很长时间,在谷歌和SO周围进行了挖掘,但仍然没有运气。最后,我来这里寻求您的帮助,请提供建议或帮助。 我对以下源代码的问题是它只显示图像不显示的字符串内容,而是显示白色矩形或有时显示
背景故事(或我正在尝试做的事情) 我的应用程序中有一个 webview,它从 asset 文件夹加载 html 文件。该文件中有 2 个 iframe。 然后用户在应用程序中导入一些 zip 文件,其
我使用 WebView.loadDataWithBaseURL 从我的应用程序的内部资源加载我的帮助页面。 我在 Assets 目录中有 help.html 和一些图像。页面加载并显示图像,但图像周围
我的 style.css 文件在 src/main/assets 文件夹中。 我正在使用以下代码在 html 中添加 style.css String message = intent.getStri
在将数据加载到 webview 之前,任何人都可以告诉哪些其他字符需要转换。 view.loadDataWithBaseURL("数据:",htmlString, "文本/html", "utf-8"
我想加载一个包含广告的远程 url。该广告将使用 JavaScript。 我正在使用: webview.loadUrl("http://myurl.com") webview.getSettings(
我有一个使用 WebView 的应用程序向用户显示一些本地 html。该应用程序在过去 2 年运行良好,但最近我收到太多关于该应用程序显示如下错误的报告: "Web page not availabl
//. . . public class MainActivity extends Activity { //. . . @Override protected void on
尝试使用 loadData/loadDataWithBaseURL 呈现从网络服务传递的 html 以显示在 webView 中。 我已经对 html 字符串 TextUtils.htmlEncode
在我的应用程序中,我在 webview 中显示数据,但无法在 webview 中显示图像。 我使用了 loadDatawithBaseURL() 方法。 这是我的代码.. webview.loadDa
我的应用程序中有一个 WebView,它显示从网页下载的 HTML 数据。为什么我加载 HTML 而不是单独加载 URL?嗯,为了允许离线搜索,我下载了 HTML 数据并将其存储在 SQL 数据库中。
问题是 goback() 没有显示我的 html 数据。产生这个问题的步骤如下 使用 loadDataWithBaseURL 方法加载 html 数据。它可以很好地呈现 html 数据。 然后单击 h
我正在尝试将数据加载到 android webview 中使用 webview.loadDataWithBaseURL("", htmlcontent, "text/html", null, "");
我使用以下代码加载电子书的 html 内容,其中 templateString 包含连接到主文件中的样式表和图像的 html 内容。 String itemURL = "file://" + item
我是一名优秀的程序员,十分优秀!