有一个链接,是第三方开发的,用项目APP的WebView打开,在部分手机上可以正常使用,而在另外一部分手机上使用时无法选择出生日期,链接如下:
http://docwechat.91160.com/app/smartimate.html
除了APP内的WebView,尝试了其他浏览器,结果如下:
安卓QQ浏览器:Y
安卓华为P9内置浏览器:Y
安卓微信内置浏览器:Y
安卓小米默认浏览器:N
WIN微信浏览器:N
WINQQ浏览器:N
WINChrome浏览器:N
因为大部分安卓浏览器能够正常使用,所以猜测能通过改变WebView的配置解决。
使用windowsQQ浏览器打开开发者工具:
发现报了一堆错,发现datepicker方法无效。
datepicker方法因为http方式的js被阻塞而无效。
查找资料,发现Mixed Content问题发生在HTTPS页面中通过HTTP方式引用资源。
对于安卓,WebView有配置可以设定Mixed Content的行为。
产生这种行为的原因是在安卓21之前,这种行为默认是被允许的,而21之后,Mixed Content被视为不安全的行为被默认禁止。
知道原因,就暂时有了解决方法(因为H5是第三方的,已经交付,只能牺牲了安全性):
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}