7

在 Android WebView 中加载以下代码时,未执行 Javascript。

仅当带有 ✓ 值的输入框包含在 html 中时,才会出现问题。请参考下面给出的代码中名为“utf8”的文本输入字段。

此输入及其值由支付网关提供商返回,它是他们表单数据的一部分,需要提交到他们的域 url 以完成支付。因此无法更改值和 html。

<!DOCTYPE html>
<html>
	<head>
	  <title></title>
	</head>
	<body>
	<form action=“” accept-charset=“UTF-8” method=“post”&gt;
	   <input name=“utf8” type=“hidden” value=“&amp;#x2713;” />
	</form>
	<script>
		alert("hello world");
	</script>
	</body>
</html>

问题见于:

  • 三星 Galaxy S7,Android 版本 8.0.0
  • 一加 5,安卓版本 9

完美地工作:

  • Motog 5s Plus,Android 版本 8.1.0
  • 三星 J2,Android 版本 5.1.1
4

3 回答 3

1

我的解决方案是将 # 替换为 %23。

从 Chrome 72 更新 webview 将 # 视为内容的结尾: https ://www.chromestatus.com/feature/5656049583390720

于 2019-02-06T11:21:12.410 回答
0

只要我的网页视图中有任何井号字符,我就会收到此问题。我以为我只是 react-native + chrome 72 特定问题。如果您删除 # 仍然是一个问题?

无论如何在Chrome版本> 72的react-native android WebViews中显示带有井号(#)的html

于 2019-02-06T09:05:08.540 回答
0

你为什么要这样设置值?

为什么不在您的示例中将“类型”设置为复选框

您只需在标签中包含“已选中”即可将复选框设置为“已选中”或“未选中”。例如

<input name=“utf8” type=“checkbox” value=“Buy_Milk” checked >

您可以将 value 属性设置为相关的内容,例如说“买牛奶”,然后您可以使用 Javascript 中的.checked方法检查是否已勾选。

document.getElementById("utf8").checked = true;
//Do something if true

document.getElementById("utf8").checked = true;
//Do something else if false

据我所知,没有理由将 unicode 引用添加为值。

于 2019-02-05T16:20:47.470 回答