From 2dc1b0fd5745b4891fc33b2ac88016fecfc53ab1 Mon Sep 17 00:00:00 2001 From: webbrain-one <295484252+webbrain-one@users.noreply.github.com> Date: Mon, 3 Aug 2026 08:53:02 +0300 Subject: [PATCH] Rename internal JS object to avoid $$ collision The app previously defined $$ which conflicts with sites that redefine it (e.g. as document.querySelectorAll). This caused Uncaught TypeError: $$.print is not a function. Fixes #11 --- app/src/main/java/ai/agusibrahim/xhrlog/MainActivity.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/ai/agusibrahim/xhrlog/MainActivity.java b/app/src/main/java/ai/agusibrahim/xhrlog/MainActivity.java index c6b2e7f..27abf3a 100644 --- a/app/src/main/java/ai/agusibrahim/xhrlog/MainActivity.java +++ b/app/src/main/java/ai/agusibrahim/xhrlog/MainActivity.java @@ -97,7 +97,7 @@ private void webinit() { // agar bisa di inspect melalui chrome di pc web.setWebContentsDebuggingEnabled(true); // register fungsi javascript - web.addJavascriptInterface(new MyJavaScriptInterface(), "$$"); + web.addJavascriptInterface(new MyJavaScriptInterface(), "AWebInspector"); // navigation callback web.setWebViewClient(new WebViewClient() { @Override @@ -122,8 +122,8 @@ public void run() { public void onPageFinished(WebView view, String url) { setTitle(view.getTitle()); view.loadUrl("javascript:function injek3(){window.hasdir=1;window.dir=function(n){var r=[];for(var t in n)'function'==typeof n[t]&&r.push(t);return r}};if(window.hasdir!=1){injek3();}"); - view.loadUrl("javascript:function injek2(){window.touchblock=0,window.dummy1=1,document.addEventListener('click',function(n){if(1==window.touchblock){n.preventDefault();n.stopPropagation();var t=document.elementFromPoint(n.clientX,n.clientY);window.ganti=function(n){t.outerHTML=n},window.gantiparent=function(n){t.parentElement.outerHTML=n},$$.print(t.parentElement.outerHTML, t.outerHTML)}},!0)}1!=window.dummy1&&injek2();"); - view.loadUrl("javascript:function injek(){window.hasovrde=1;var e=XMLHttpRequest.prototype.open;XMLHttpRequest.prototype.open=function(ee,nn,aa){this.addEventListener('load',function(){$$.log(this.responseText, nn, JSON.stringify(arguments))}),e.apply(this,arguments)}};if(window.hasovrde!=1){injek();}"); + view.loadUrl("javascript:function injek2(){window.touchblock=0,window.dummy1=1,document.addEventListener('click',function(n){if(1==window.touchblock){n.preventDefault();n.stopPropagation();var t=document.elementFromPoint(n.clientX,n.clientY);window.ganti=function(n){t.outerHTML=n},window.gantiparent=function(n){t.parentElement.outerHTML=n},AWebInspector.print(t.parentElement.outerHTML, t.outerHTML)}},!0)}1!=window.dummy1&&injek2();"); + view.loadUrl("javascript:function injek(){window.hasovrde=1;var e=XMLHttpRequest.prototype.open;XMLHttpRequest.prototype.open=function(ee,nn,aa){this.addEventListener('load',function(){AWebInspector.log(this.responseText, nn, JSON.stringify(arguments))}),e.apply(this,arguments)}};if(window.hasovrde!=1){injek();}"); super.onPageFinished(view, url); } }); @@ -249,7 +249,7 @@ public boolean onOptionsItemSelected(MenuItem item) { break; case R.id.menu_touchinspect: // saat menu Touch Inscpector di klik, maka inject js yang sudah diatur - web.loadUrl("javascript:window.touchblock=!window.touchblock;setTimeout(function(){$$.blocktoggle(window.touchblock)}, 100);"); + web.loadUrl("javascript:window.touchblock=!window.touchblock;setTimeout(function(){AWebInspector.blocktoggle(window.touchblock)}, 100);"); break; case R.id.menu_exit: finish();