WebView 不加载 javascript 代码

Posted

技术标签:

【中文标题】WebView 不加载 javascript 代码【英文标题】:WebView does not load javascript codes 【发布时间】:2016-10-25 14:32:11 【问题描述】:

我正在尝试使用带有 html + javascript 代码的字符串参数的 loadData 方法在 webview 上打开一个 html 页面。

但结果不是我想要的。 据我了解,即使我启用了 javascript,它也没有加载 javascript 部分。

如果 webview 无法实现还有其他方法可以在支持 javascript 代码的 android 手机上显示我的页面吗?提前致谢。

这是我的相关代码:

 WebView mWebView = (WebView) findViewById(R.id.activity_main_webview);
 WebSettings webSettings = mWebView.getSettings();
 webSettings.setJavaScriptEnabled(true);
 mWebView.loadData(htmlData, "text/html; charset=utf-8", "UTF-8");

【问题讨论】:

真的没人知道这方面的信息吗? 【参考方案1】:

您的表单似乎有问题。操作无法重定向到外部站点。 尝试手动从表单中获取所有值,并使用 Ajax 之类的东西发送发布请求。

【讨论】:

但是我不想发布表单现在,我只想展示它。当用户填写表格时,他将发送表格。这张照片是我用 webview 展示的。 对不起,我现在明白了,但是如何获取所有值我只有带有 html 代码的字符串数据。 好的,我想我应该使用 JSInterface,但是没有关于如何实现 JSInterface 来获取所有值的好消息,你知道吗? 像往常一样在 js 函数中获取值——典型的 js document.getElementsByName() 然后通过 js 发送,或者在 Java 中执行这个 js 函数。 另外,如果你想从 js 获取价值到 java 你可以看到这个话题***.com/questions/25074903/…【参考方案2】:

我终于解决了这个问题。 htmlData 包含 unexpected characters\n\u0000<!-- 等。我通过删除它们替换了我的字符串,现在它可以工作了。谢谢大家。

htmlData = htmlData.replace("\\n", "");
htmlData = htmlData.replace("\\t", "");
htmlData = htmlData.replace("\\u0000", "");
htmlData = htmlData.replace("\\", "");
htmlData = htmlData.replace("\"\"\"", "");
htmlData = htmlData.replace("<!--function", "function");
htmlData = htmlData.replace("<!-- about:blank -->", "");

【讨论】:

以上是关于WebView 不加载 javascript 代码的主要内容,如果未能解决你的问题,请参考以下文章

Android WebView在加载html之前注入Javascript

Flutter:如何在运行 JavaScript 函数并显示 html 后等待 WebView 完成加载?

带有 Javascript 的 WebView 不断重新加载

使用嵌入式 HTML 代码加载 WebView - Android

android webview加载本地js,执行js方法undefined

android webview加载本地js,执行js方法undefined