赞
踩
js调试效果:
下面主要是拼装js代码 :
- /**
- * @Description 获取webView选中文字内容
- * @param webView
- * @param callBack
- */
- public static void webViewGetSelectedData(WebView webView,webViewGetSelectedDataCallBack callBack) {
- String js ="function selectEnable(document) {"
- + " document.oncontextmenu = new Function(\"if(event){event.returnValue=true;}\");"
- + " document.onselectstart = new Function(\"if(event){event.returnValue=true;}\");"
- + " let frames = document.getElementsByTagName(\"iframe\");"
- + " if (frames.length > 0) {"
- + " for (var i = 0; i < frames.length; i++) {"
- + " document = frames[i].contentDocument;"
- + " selectEnable(document);"
- + " }"
- + " }"
- + "}"
- + "function selectTxt(document) {"
- + " let rtnTxt = \"\";"
- + " rtnTxt = document.getSelection ? document.getSelection().toString() : document.selection.createRange().text;"
- + " let frames = document.getElementsByTagName(\"iframe\");"
- + " if (frames.length > 0) {"
- + " for (var i = 0; i < frames.length; i++) {"
- + " document = frames[i].contentDocument;"
- + " let sltTxt = selectTxt(document);"
- + " if (sltTxt != \"\") {"
- + " rtnTxt = sltTxt;"
- + " }"
- + " }"
- + " }"
- + " return rtnTxt;"
- + "}"
- + "(function(){"
- + " selectEnable(document);"
- + " return selectTxt(document);"
- + "})()";
- /* android系统4.4以上的时候调用 4.4以下忽略*/
- webView.evaluateJavascript("javascript:" + js, txt -> {
- //todo 这里可以对返回文本进行处理,比如转为中文字符,过滤非法字符
- callBack.onFinished(txt);
- });
-
- }
- public interface webViewGetSelectedDataCallBack
- {
- /**
- @param value
- */
- void onFinished(String value);
- }

至于如何调用,可以通过
- @Override
- public void onActionModeStarted(ActionMode mode) {
-
- ……
- webViewGetSelectedData(webView, value -> {
- Log.i("getSelection", "getSelectedData: "+value);
- });
- ……
-
- super.onActionModeStarted(mode);
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。