我从服务器收到有效的JSON ,但Chromium告诉我这个错误:
"未捕获的SyntaxError:意外的标识符",来源:(1)
我所知道的是,当我调用以下方法时:
stringBuilder.append("javascript: javascriptBridge.getHandlers().showPost('");
stringBuilder.append(e.getData());
stringBuilder.append("');");
webView.loadUrl(stringBuilder.toString());
e.getData()
是有效的JSON,它实际上并没有在另一方被调用。 JSON中的某些内容被错误地解释为javascript函数参数
javascriptBridge.registerHandler('showPost', function (data) {
alert('showpost'); //this is not called
});
它适用于其他数据,以前它甚至可以用于JSON,这就是为什么它很奇怪。任何想法如何解决它?可能是某些角色崩溃了。
答案 0 :(得分:2)
以下修正了它,感谢commons-lang3
:
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("javascript: javascriptBridge.getHandlers().showPost('");
stringBuilder.append(StringEscapeUtils.escapeEcmaScript(e.getData()));
stringBuilder.append("');");
webView.loadUrl(stringBuilder.toString());
答案 1 :(得分:1)
StringEscapeUtils.escapeEcmaScript
解决了问题,将此库添加到您的gradle:
compile 'org.apache.commons:commons-lang3:3.4'