diff --git a/backend/routes/clickTtHttpPageRoutes.js b/backend/routes/clickTtHttpPageRoutes.js index df038332..66a6a27e 100644 --- a/backend/routes/clickTtHttpPageRoutes.js +++ b/backend/routes/clickTtHttpPageRoutes.js @@ -316,6 +316,15 @@ function injectProxyNavigationScript(html, proxyBaseUrl, pageBaseUrl, sid) { 'window.location.assign(buildProxyUrl(targetUrl));', 'return true;', '}', + 'function shouldAllowInlineConfirm(element){', + "var onclickValue=element&&element.getAttribute?element.getAttribute('onclick'):null;", + 'if(!onclickValue)return true;', + "var match=onclickValue.match(/return\\s+confirm\\((['\"])([\\s\\S]*?)\\1\\)/i);", + 'if(!match)return true;', + 'var confirmed=window.confirm(match[2]);', + "try{console.log('[ClickTT Proxy] inline confirm',{message:match[2],confirmed:confirmed});}catch(e){}", + 'return confirmed;', + '}', 'function getSubmitTarget(form, submitter){', "var action=submitter&&submitter.getAttribute?submitter.getAttribute('formaction'):null;", 'if(action)return normalizeUrl(action,PAGE_BASE_URL);', @@ -330,6 +339,10 @@ function injectProxyNavigationScript(html, proxyBaseUrl, pageBaseUrl, sid) { "try{console.log('[ClickTT Proxy] submit control click',{name:submitControl.name||null,value:submitControl.value||null,type:submitControl.type||submitControl.tagName,formAction:submitControl.getAttribute?submitControl.getAttribute('formaction'):null,text:(submitControl.textContent||'').trim().slice(0,120)});}catch(e){}", '}', 'if(!anchor||event.defaultPrevented)return;', + 'if(!shouldAllowInlineConfirm(anchor)){', + 'event.preventDefault();', + 'return;', + '}', "var targetUrl=normalizeUrl(anchor.getAttribute('href'),PAGE_BASE_URL);", 'if(!targetUrl||!shouldProxyUrl(targetUrl))return;', "try{console.log('[ClickTT Proxy] anchor click',{href:anchor.getAttribute('href'),targetUrl:targetUrl,text:(anchor.textContent||'').trim().slice(0,120)});}catch(e){}",