最近做到富文本交互这块,需要实时获取当前光标位置的文字属性,于是js就提供了
toolBar.getTextPropertyEvent()js方法。无奈 webview 的evaluateJavascript()方法有版本限制(min16)。只好另想它法,于是发现webview setWebChromeClient()里可以设置WebChromeClient类里有
@Override public boolean onJsAlert(WebView view, String url, String message, JsResult result) { // Gson gson = new Gson(); // richTextBean = gson.fromJson(message, RichTextBean.class); result.cancel(); return true; } @Override public boolean onJsConfirm(WebView view, String url, String message, JsResult result) { return super.onJsConfirm(view, url, message, result); } @Override public boolean onJsBeforeUnload(WebView view, String url, String message, JsResult result) { return super.onJsBeforeUnload(view, url, message, result); } @Override public boolean onJsPrompt(WebView view, String url, String message, String defaultValue, JsPromptResult result) { return super.onJsPrompt(view, url, message, defaultValue, result); }
这几个方法于是乎,就想到利用这几个方法回调来获取js的数据:
于是在需要获取状态的地方 使用js 的alert 方法来获取到数据,就成了如下写法。
web_edit_view.loadUrl("javascript:alert(toolBar.getTextPropertyEvent())");