当前位置:   article > 正文

Andorid与webView交互,获取webView选中文字,兼容了iframe_android webview 点文字选中文字

android webview 点文字选中文字

js调试效果:

下面主要是拼装js代码 :

  1. /**
  2. * @Description 获取webView选中文字内容
  3. * @param webView
  4. * @param callBack
  5. */
  6. public static void webViewGetSelectedData(WebView webView,webViewGetSelectedDataCallBack callBack) {
  7. String js ="function selectEnable(document) {"
  8. + " document.oncontextmenu = new Function(\"if(event){event.returnValue=true;}\");"
  9. + " document.onselectstart = new Function(\"if(event){event.returnValue=true;}\");"
  10. + " let frames = document.getElementsByTagName(\"iframe\");"
  11. + " if (frames.length > 0) {"
  12. + " for (var i = 0; i < frames.length; i++) {"
  13. + " document = frames[i].contentDocument;"
  14. + " selectEnable(document);"
  15. + " }"
  16. + " }"
  17. + "}"
  18. + "function selectTxt(document) {"
  19. + " let rtnTxt = \"\";"
  20. + " rtnTxt = document.getSelection ? document.getSelection().toString() : document.selection.createRange().text;"
  21. + " let frames = document.getElementsByTagName(\"iframe\");"
  22. + " if (frames.length > 0) {"
  23. + " for (var i = 0; i < frames.length; i++) {"
  24. + " document = frames[i].contentDocument;"
  25. + " let sltTxt = selectTxt(document);"
  26. + " if (sltTxt != \"\") {"
  27. + " rtnTxt = sltTxt;"
  28. + " }"
  29. + " }"
  30. + " }"
  31. + " return rtnTxt;"
  32. + "}"
  33. + "(function(){"
  34. + " selectEnable(document);"
  35. + " return selectTxt(document);"
  36. + "})()";
  37. /* android系统4.4以上的时候调用 4.4以下忽略*/
  38. webView.evaluateJavascript("javascript:" + js, txt -> {
  39. //todo 这里可以对返回文本进行处理,比如转为中文字符,过滤非法字符
  40. callBack.onFinished(txt);
  41. });
  42. }
  43. public interface webViewGetSelectedDataCallBack
  44. {
  45. /**
  46. @param value
  47. */
  48. void onFinished(String value);
  49. }

至于如何调用,可以通过 

  1. @Override
  2. public void onActionModeStarted(ActionMode mode) {
  3. ……
  4. webViewGetSelectedData(webView, value -> {
  5. Log.i("getSelection", "getSelectedData: "+value);
  6. });
  7. ……
  8. super.onActionModeStarted(mode);
  9. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/97258
推荐阅读
相关标签
  

闽ICP备14008679号