在Chrome扩展中使用"setDiscoverTargets"会导致错误,因为这个方法只能在Chrome DevTools Protocol(CDP)的目标页面中使用。
解决方法是使用其他适用于Chrome扩展的方法来代替"setDiscoverTargets"。以下是一个示例代码,展示了如何在Chrome扩展中使用"chrome.debugger" API 来获取当前页面的所有目标。
// 在background脚本中使用chrome.debugger API
chrome.debugger.attach({tabId: chrome.devtools.inspectedWindow.tabId}, '1.2', function() {
chrome.debugger.sendCommand({tabId: chrome.devtools.inspectedWindow.tabId}, 'Target.getTargets', {}, function(result) {
console.log(result);
// 在这里处理返回的目标数据
chrome.debugger.detach({tabId: chrome.devtools.inspectedWindow.tabId});
});
});
在上面的示例中,我们通过调用"chrome.debugger.attach"方法来附加到当前页面,然后使用"chrome.debugger.sendCommand"方法发送"Target.getTargets"命令来获取目标数据。在回调函数中,我们可以处理返回的目标数据。最后,我们通过调用"chrome.debugger.detach"方法来从页面中分离。
请注意,为了使用"chrome.debugger" API,你需要在扩展的清单文件中声明"debugger"权限。在清单文件中添加以下代码:
"permissions": [
"debugger"
]
这样,你就可以在Chrome扩展中使用"chrome.debugger" API 来代替"setDiscoverTargets"方法。