extend WebViewClient and override onPageFinished() here, you need to add your own js to add a click event listener for each div element
Kotlin:
class MyWebViewClient : WebViewClient() { override fun onPageFinished(view: WebView, url: String) { view.loadUrl("javascript: " + """ Object.prototype.each = function (fn, bind) { console.log(bind); for (var i = 0; i < this.length; i++) { if (i in this) { fn.call(bind, this[i], i, this); } } }; var _addListener = document.addEventListener || document.attachEvent, _eventClick = window.addEventListener ? 'click' : 'onclick'; var elements = document.getElementsByTagName("div"); elements.each(function (el) { _addListener.call(el, _eventClick, function () { // todo process the clicked div element el.style.cssText = "border-color: black;border-style: dashed;" }, false); }) """.trimIndent()) } }
Java:
public class MyWebViewClient extends WebViewClient { @Override public void onPageFinished(WebView view, String url) { view.loadUrl("javascript: " + "Object.prototype.each = function (fn, bind) {\n" + " console.log(bind);\n" + " for (var i = 0; i < this.length; i++) {\n" + " if (i in this) {\n" + " fn.call(bind, this[i], i, this);\n" + " }\n" + " }\n" + " };\n" + "\n" + " var _addListener = document.addEventListener || document.attachEvent,\n" + " _eventClick = window.addEventListener ? 'click' : 'onclick';\n" + "\n" + " var elements = document.getElementsByTagName(\"div\");\n" + "\n" + " elements.each(function (el) {\n" + " _addListener.call(el, _eventClick, function () {\n" +
now set your webViewClient to webView
webview.webViewClient = MyWebViewClient()

source share