Android WebView和js交互过程中遇到这个问题:[INFO:CONSOLE(1)] “Uncaught SyntaxError: missing ) after argument list”,
android传递ueditor的数据到html中时,不显示内容,控制台只显示一条信息:[INFO:CONSOLE(1)] “Uncaught SyntaxError: missing ) after argument list”,
猜想是转义导致的,java base64加密,js解密,再设置到ueditor中;
只用window.atob()解码,还是报错:Uncaught DOMException: Failed to execute ‘atob’ on ‘Window’: The string to;
原因就是:编码的字符串中含有“-”或者“_”。最终代码如下:
- java 代码:
String result = Base64.encodeToString(content.getBytes(), Base64.NO_WRAP | Base64.NO_PADDING | Base64.URL_SAFE);
webView.loadUrl("javascript:setContent('" + result + "')");
- js代码
<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title>ueditor demo</title>
</head>
<body>
<!-- 加载编辑器的容器 -->
<script id="container" name="content" type="text/plain">
</script>
<!-- 配置文件 -->
<script type="text/javascript" src="ueditor.config.js"></script>
<!-- 编辑器源码文件 -->
<script type="text/javascript" src="ueditor.all.js"></script>
<!-- 实例化编辑器 -->
<script type="text/javascript">
function setContent(content){
var ue = UE.getEditor('container',{
//关闭字数统计
wordCount:false,
//关闭elementPath
elementPathEnabled:false,
});
ue.ready(function(){
ue.setDisabled();
//设置编辑器的内容,base64解码
var result = decodeURIComponent(escape(window.atob((content).replace(/-/g, "+").replace(/_/g, "/"))));
ue.setContent(result);
});
}
</script>
</body>
</html>