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