Chrome 扩展:(DOM)调试器 API 不再工作

Posted

技术标签:

【中文标题】Chrome 扩展:(DOM)调试器 API 不再工作【英文标题】:Chrome extension: (DOM)Debugger API does not work anymore 【发布时间】:2014-11-04 00:55:21 【问题描述】:

自版本 37.0.2062.103 以来,我们的 chrome 扩展程序不再正常工作(它曾经在 chrome 版本 36.0.1985.143 上正常工作)。

具体来说,当我们使用 DOMDebugger 时,调试器 API 已停止为我们工作。 见附件代码:(background.js)

chrome.tabs.onUpdated.addListener(function(tabId,changeInfo,tab)
    if( changeInfo.status == "loading"  && tab.active)
        var debugId = tabId:tabId;
        chrome.debugger.attach(debugId, '1.0', function() 
            chrome.debugger.sendCommand(debugId, 'Debugger.enable', , function() 
                chrome.debugger.sendCommand(debugId, "DOMDebugger.setEventListenerBreakpoint", 'eventName':'click',
                    function(result) 
                        console.log('registering click');
                    );
            );
        );
    
);
chrome.debugger.onEvent.addListener(onEvent);
function onEvent(debuggeeId, method,params) 
    if(method=="Debugger.paused")
        console.log('DONE!');
    
;

扩展成功启动调试器。我们得到黄色调试器功能区。 我们还在控制台中看到“注册点击”消息。结果参数是一个空对象 (第 8 行)。 但是,单击具有单击事件侦听器的按钮时,没有任何反应。

它以前可以正常工作。

【问题讨论】:

听起来你也应该在crbug.com 上提出问题并在此处添加指向它的链接。 【参考方案1】:

它似乎与https://codereview.chromium.org/305753005 一起倒退了。现在需要调用“DOM.enable”才能使其工作。在 Chrome 端,我们应该在 setEventListenerBreakpoint 上隐式启用 DOM 域以实现向后兼容性。不幸的是,它已经挤进了稳定版本。

【讨论】:

这方面有问题吗?如果是,请添加指向它的链接。

以上是关于Chrome 扩展:(DOM)调试器 API 不再工作的主要内容,如果未能解决你的问题,请参考以下文章

即使没有 DOM 断点,Chrome 调试器也会在某个函数处停止

通过 chrome 扩展访问 DOM 元素

不常见但是有用的 Chrome 调试技巧

使用 chrome 开发者工具在 jquery 中调试 Dom 异常

ASP.NET Web API 在来自 Chrome 扩展的并发 AJAX 调用上崩溃

使用 Chrome 扩展操作 DOM