【发布时间】:2020-07-16 01:16:28
【问题描述】:
最近(2020 年 7 月)在 Android WebView 上发生了这种情况。
使用 evaluateJavascript 提交表单不起作用。页面确实“提交”了,但服务器没有收到 POST 值。
Android WebView 是否存在会阻止表单提交的安全更改或其他更新?
任何 JavaScript 表单提交替代方案?
具有单个表单、单个输入和一个提交按钮的简单 HTML 页面。从 URL 加载到 webview。
<form name="form1" method="post" action="stwiosbtn.aspx" id="form1">
<input name="txtField1" type="text" id="txtField1" style="width:90%;" />
<input type="submit" name="btnSave" value="Save" id="btnSave" style="width:90%;" />
</form>
Android Studio 中的 Java 代码
String jScript = "document.forms[0].submit();";
mywebview.evaluateJavascript(jScript, null);
webview中的表单确实提交,调用函数后触发了onPageLoad。但是没有发布值。输入值不会发送任何内容。仅在单击提交按钮时。
有趣的是,这可行,但发送点击按钮不符合我想要满足的要求。
String jScript = "var mysubmitbutton = document.getElementsByName('btnSave'); mysubmitbutton[0].click();";
mywebview.evaluateJavascript(jScript, null);
这是一个成熟的应用程序。表格[0].submit();几周前还在工作。此外,带有 WKWebView 的 iOS 版本具有相同的 JavaScript 并且工作正常。这仅适用于 Android。
还尝试了以下方法,但这些都不起作用;
String jScript = "function doTheThing(){ " +
"var sendform = document.forms[0]; " +
"sendform.dispatchEvent(new Event('submit', { cancelable: true })) } " +
"doTheThing();";
String jScript = "document.getElementById('form1').submit()";
String jScript = "document.getElementById(\"form1\").submit();";
【问题讨论】:
-
您应该将该 JavaScript 编写在一个单独的文件中并将其加载到一个字符串中,以便您获得适合该语言的工具
标签: javascript android webview