在hybird-APP开发中,经常会用到的WebView.loadUrl("javascript:+js")的方式来向webview注入js。
在最近的项目中发现注入的js中带有部分已经经过Url encode过字符时,在某些机型上会注入的js运行会失败。
经过上网查找后发现在android4.4以上的版本,WebView.loadUrl会对的js进行一次url decode后再运行,故注入会报错。
google推荐方案是在android4.4以上版本使用新接口 evaluateJavascript 来注入js。
if (VERSION.SDK_INT >= VERSION_CODES.KITKAT) { evaluateJavascript(js, null); } else { loadUrl("javascript:" + js); }
参考:https://code.google.com/p/android/issues/detail?id=69969