Android WebView 无法在 html 具有特殊字符时执行 Javascript ✓



当下面的代码加载到Android WebView中时,Javascript不会被执行。

仅当 html 中包含值为 ✓ 的输入框时,才会出现问题。引用下面给出的代码中的文本输入字段,名称为"utf8"。

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

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

在 上看到问题:

  • 三星银河S7,安卓版本8.0.0
  • 一加5,安卓版本9

完美地工作:

  • Motog 5s Plus,安卓版本8.1.0
  • 三星J2,安卓版本5.1.1

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

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

为什么要这样设置值?

为什么不在示例中将"类型"设置为复选框

您可以将复选框设置为"选中"或"未选中",只需在标签中包含"选中"即可。

<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 引用添加为值。

一旦

我的网络视图中有任何哈希标记字符,我就会遇到此问题。我以为我只是反应原生 + chrome 72 特定问题。如果您删除#?

(无论如何,在 Chrome 版本> 72 的 react-native android WebView 中显示带有哈希标记 (#( 的 html(

最新更新