如何在扩展Chrome DevTool时检索请求的启动器
How to retrieve the Initiator of a request when extending Chrome DevTool?
我正在编写一个扩展,它需要知道在发出网络请求时谁负责。网络面板中的启动器正是我想要的。但我无法使用devtools.network或devtools.panels API获得它。是因为他们根本不公开这些信息,还是我遗漏了什么?
您的正确之处在于,启动器不是通过devtools扩展API公开的——目前,API公开的资源属性仅限于HAR规范中的属性,其中不包括启动器。您可以使用原始DevTools协议(https://developers.google.com/chrome-developer-tools/docs/debugger-protocol)以获取DevTools前端可用的所有数据。请注意,它也暴露在Chrome扩展中(http://developer.chrome.com/extensions/debugger.html),但当DevTools前端打开时,您无法使用它,因此您将无法在DevTools扩展中访问它。
根据您的尝试,实验性Timeline API可能会有一些用处(此测试显示了如何做到这一点:https://code.google.com/p/chromium/codesearch#chromium/src/third_party/WebKit/LayoutTests/inspector/extensions/extensions-events.html&q=webInspector.timeline&sq=封装:铬&type=cs&l=148)。与Network中的启动器不同,它不会向您显示文档中导致加载静态引用资源的位置,但它会为您提供XHR和动态添加到文档中的资源的堆栈跟踪。
这可能在最初的答案后发生了变化,但为了将来参考,这可以通过监听网络事件的调试器扩展API实现
示例(在扩展中)
var tabId = parseInt(window.location.search.substring(1));
window.addEventListener("load", function() {
chrome.debugger.sendCommand({tabId:tabId}, "Network.enable");
chrome.debugger.onEvent.addListener(onEvent);
});
window.addEventListener("unload", function() {
chrome.debugger.detach({tabId:tabId});
});
var requests = {};
function onEvent(debuggeeId, message, params) {
if (tabId != debuggeeId.tabId)
return;
if (message == "Network.requestWillBeSent") {
console.log(params.initiator);
}
}
该代码是从HTTP扩展示例
- 在检索数据时是否可以停止图像加载请求
- 如何检索 AJAX 请求返回的数据
- 从HTML模板中的$http请求中检索的$scope访问更深层次的数据
- 如何从我的跨浏览器插件的跨域HEAD请求中检索响应标头
- 如何从发布请求中检索数据
- Ajax 请求失败 - 从服务器检索用户标识
- 在Firefox控制台中使用Javascript检索GET请求
- 从 nodejs 中的多部分请求中检索 JSON 对象
- 如何检索请求有效负载
- 使用纯javascript检索挂起的AJAX请求数
- 如何从请求主体(Javascript)中查看/检索FormData对象
- 如何将一些指定的时间设置为ajax调用,这样如果请求正在花费时间检索数据,它应该来到FAIL块
- 发送包含从ajax请求中检索到的数据的电子邮件
- 如何在扩展Chrome DevTool时检索请求的启动器
- AJAX请求检索XML输出和大小写重定向..但事实并非如此;t重定向
- 以JSON结构的形式从post请求中检索数据
- 正在从维基百科解析请求中检索pageid
- AngularJS-我如何使用在我的控制器中使用Factory GET请求检索的数据
- CRM 2011 -如何在JavaScript中使用SOAP请求检索全局选项集
- 防止JQuery每次为缓存的HTML请求检索脚本