Andorid与webView交互,获取webView选中文字,兼容了iframe
生活随笔
收集整理的這篇文章主要介紹了
Andorid与webView交互,获取webView选中文字,兼容了iframe
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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); }?
總結
以上是生活随笔為你收集整理的Andorid与webView交互,获取webView选中文字,兼容了iframe的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [转]nginx反向代理网站(网易、百度
- 下一篇: [转]常见的用户密码加密方式以及破解方法