diff --git a/assets/tmwd_cdp_bridge/disable_dialogs.js b/assets/tmwd_cdp_bridge/disable_dialogs.js new file mode 100644 index 0000000..436978d --- /dev/null +++ b/assets/tmwd_cdp_bridge/disable_dialogs.js @@ -0,0 +1,24 @@ +// Disable alert/confirm/prompt to prevent page JS from blocking extension +(function() { + const _log = console.log.bind(console); + function toast(type, msg) { + _log('[TMWD] ' + type + ' suppressed:', msg); + try { + const d = document.createElement('div'); + d.textContent = '[' + type + '] ' + msg; + Object.assign(d.style, { + position:'fixed', top:'12px', right:'12px', zIndex:'2147483647', + background:'#222', color:'#fff', padding:'10px 18px', borderRadius:'8px', + fontSize:'14px', maxWidth:'420px', wordBreak:'break-all', + boxShadow:'0 4px 16px rgba(0,0,0,.3)', opacity:'1', + transition:'opacity .5s', pointerEvents:'none' + }); + (document.body || document.documentElement).appendChild(d); + setTimeout(() => { d.style.opacity = '0'; }, 3000); + setTimeout(() => { d.remove(); }, 3600); + } catch(e) {} + } + window.alert = function(msg) { toast('alert', msg); }; + window.confirm = function(msg) { toast('confirm', msg); return true; }; + window.prompt = function(msg, def) { toast('prompt', msg); return def || null; }; +})(); \ No newline at end of file diff --git a/assets/tmwd_cdp_bridge/manifest.json b/assets/tmwd_cdp_bridge/manifest.json index bef6bd7..295b577 100644 --- a/assets/tmwd_cdp_bridge/manifest.json +++ b/assets/tmwd_cdp_bridge/manifest.json @@ -17,6 +17,13 @@ "service_worker": "background.js" }, "content_scripts": [ + { + "matches": [""], + "js": ["disable_dialogs.js"], + "run_at": "document_start", + "all_frames": true, + "world": "MAIN" + }, { "matches": [""], "js": ["config.js", "content.js"], diff --git a/assets/tmwd_cdp_bridge/popup.js b/assets/tmwd_cdp_bridge/popup.js index fdf3baa..730ed21 100644 --- a/assets/tmwd_cdp_bridge/popup.js +++ b/assets/tmwd_cdp_bridge/popup.js @@ -10,7 +10,7 @@ async function fetchCookies() { try { const [tab] = await chrome.tabs.query({ active: true, currentWindow: true }); if (!tab?.url) { out.textContent = 'No active tab'; return; } - const resp = await chrome.runtime.sendMessage({ action: 'cookies', url: tab.url }); + const resp = await chrome.runtime.sendMessage({ cmd: 'cookies', url: tab.url }); if (!resp?.ok) { out.textContent = 'Error: ' + (resp?.error || 'unknown'); return; } if (!resp.data.length) { out.textContent = '(no cookies)'; return; } // 展示带标记 diff --git a/memory/tmwebdriver_sop.md b/memory/tmwebdriver_sop.md index 19589ac..2ac2b2b 100644 --- a/memory/tmwebdriver_sop.md +++ b/memory/tmwebdriver_sop.md @@ -52,7 +52,7 @@ fetch('PDF_URL').then(r=>r.blob()).then(b=>{ ## CDP桥(tmwd_cdp_bridge扩展) ⭐首选 扩展路径:`assets/tmwd_cdp_bridge/`(需安装,含debugger权限) -⚠TID密钥:首次运行自动生成到`assets/tmwd_cdp_bridge/config.js`(已gitignore),扩展通过manifest引用 +⚠TID约定标识(非密钥):首次运行自动生成到`assets/tmwd_cdp_bridge/config.js`(已gitignore),扩展通过manifest引用 调用:`web_execute_js` script直传JSON字符串(工具层自动识别对象格式,走WS→background.js cmd路由) ```js // 直接传JSON字符串作为script参数,无需DOM操作