Android项目中加载本地的html代码,将服务端返回的动态js替换后,在加载,js未执行。
查找原因过程中发现,使用webView的loadData方法加载后,具体的执行代码如下,对应的js未执行。
@Override
public void loadData(String data, String mimeType, String encoding) {
data = setLineHeight(data);
super.loadData(data, mimeType, encoding);
}
/**
* 设置内文行高,并去除WebView默认外边框边距
*/
private String setLineHeight(String content) {
String strUrl = "<html style=\"color: " + defaultFontColor + ";fontSize:" + defaultFontSize + "\"> \n" +
"<head> \n" +
// "<style type=\"text/css\"> \n" +
// "body {text-align:justify; font-size: 14px; line-height: 10px;}\n" +
// "</style> \n" +
"</head> \n" +
"<body style=\"color: " + defaultFontColor + ";fontSize:" + defaultFontSize + ";margin:0;padding:0" + "\">" + content + "</body> \n </html>";
return strUrl;
}
经过反复尝试及查找问题,使用webview另外的加载html代码的方式后,js正常执行,解决方法如下。
@Override
public void loadData(String data, String mimeType, String encoding) {
data = setLineHeight(data);
super.loadData(data, mimeType, encoding);
//解决Android webView加载html代码 不执行js方法的问题
loadDataWithBaseURL(null,data, "text/html; charset=UTF-8", "utf-8",null);
}
小记:加载本地html时,建议使用loadDataWithBaseURL方法去加载。
本文探讨了在Android项目中使用WebView加载本地HTML时遇到的JS执行失败问题。通过对比loadData与loadDataWithBaseURL方法,阐述了解决方案,并建议使用后者确保JS正确执行。
2704

被折叠的 条评论
为什么被折叠?



