Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google chrome extension 获取第'页;客户端操作之前的服务器响应_Google Chrome Extension - Fatal编程技术网

Google chrome extension 获取第'页;客户端操作之前的服务器响应

Google chrome extension 获取第'页;客户端操作之前的服务器响应,google-chrome-extension,Google Chrome Extension,我正在尝试使用chrome扩展名从页面检索脚本标记。如果我打开查看页面源代码我可以看到脚本标记,但是如果我使用devtools查看它,它就不在那里了。客户端将删除该脚本。我已经试过了,响应与浏览器操纵的响应相同。如何在删除脚本标记之前访问它?使用API读取所有正在运行的脚本,即使它们的标记已删除 manifest.json: “权限”:[“调试器”、“活动选项卡”] 浏览器\u操作的popup.js或background.js: chrome.tabs.query({active:true,c

我正在尝试使用
chrome扩展名
从页面检索
脚本
标记。如果我打开
查看页面源代码
我可以看到脚本标记,但是如果我使用devtools查看它,它就不在那里了。客户端将删除该脚本。我已经试过了,响应与浏览器操纵的响应相同。如何在删除脚本标记之前访问它?

使用API读取所有正在运行的脚本,即使它们的标记已删除

manifest.json:

“权限”:[“调试器”、“活动选项卡”]
浏览器\u操作的popup.js或background.js:

chrome.tabs.query({active:true,currentWindow:true},async([tab])=>{
const pageScripts=await getTabScripts(tab.id);
日志(页面脚本);
});
函数getTabScripts(tabId){ 常量结果=[]; 让我们来讨论这个问题; 让定时器; 函数onEvent(src、方法、信息){ if(方法=='Debugger.scriptParsed'&&info.executionContextId===1){ 结果推送(getSource(info)); } 清除超时(计时器); 定时器=设置超时(doResolve,100); } 函数getSource(信息){ const{scriptId,url}=info; 返回新承诺(解决=> chrome.debugger.sendCommand({tabId},'debugger.getScriptSource',{scriptId}, e=>resolve({code:e.scriptSource,url,info})); } 函数doResolve(){ chrome.debugger.onEvent.removeListener(onEvent); detach({tabId}); resolveMain(Promise.all(results)); } 返回新承诺(解决=>{ resolveMain=resolve; attach({tabId},'1.3',()=>{ chrome.debugger.onEvent.addListener(onEvent); sendCommand({tabId},'debugger.enable'); }); }); }
不幸的是,它会在选项卡上方临时显示一个面板,显示正在调试的脚本,但是如果仍然报告所有结果,您可以将超时时间
100
减少到类似
20

Chrome extensions无法做到这一点,但即使在脚本被删除后也可以读取脚本,请参见下面的答案。在Firefox中有onbeforescriptexecute事件。谢谢,但是我用你的答案得到的脚本要么是
版权
,要么是带有2行或3行任意代码的匿名函数,其中url要么是空的,要么是
chrome-error://chromewebdata/
。它们都与我正在调试的实际页面无关。如果没有看到实际站点。最后一件事:尝试删除
&&info.executionContextId===1
以查看所有脚本。我获得了页面的脚本,但没有要删除的代码。无论如何,谢谢你的帮助。