chrome.debugger

描述 chrome.debugger API 是 Chrome 远程调试协议(英文)的另一种消息传输方式。chrome.debugger 可以附加到一个或多个标签页,以便记录网络交互、调试 JavaScript、改变 DOM 和 CSS 等等。使用调试对象的标签页标识符指定 sendCommand 的目标标签页,并在 onEvent 的回调函数中通过标签页标识符分发事件。
可用版本 从 Chrome 18 开始支持。
权限 "debugger"

说明

目前,通过调试器 API 附加到标签页与在同一标签页使用内置的 Chrome 浏览器开发者工具两者不能同时进行。如果用户在扩展程序已附加到标签页时调用了 Chrome 浏览器的开发者工具,调试会话将终止,扩展程序可以之后再重新建立会话。

清单文件

您必须在您的扩展程序的清单文件中声明 "debugger" 权限才能使用这一 API。

      {
        "name": "我的扩展程序",
        ...
        "permissions": [
          "debugger",
        ],
        ...
      }
      

例子

您可以在示例中找到这一 API 的示例。

摘要

类型
Debuggee
TargetInfo
方法
attach chrome.debugger.attach( Debuggee target, string requiredVersion, function callback)
detach chrome.debugger.detach( Debuggee target, function callback)
sendCommand chrome.debugger.sendCommand( Debuggee target, string method, object commandParams, function callback)
getTargets chrome.debugger.getTargets(function callback)
事件
onEvent
onDetach

类型

Debuggee

调试对象的标识符,必须指定 tabId 或 extensionId 中的某一个。
属性
integer (可选)
tabId

您要调试的标签页的标识符。

string (可选)
extensionId

从 Chrome 27 开始支持。

您要调试的扩展程序的标识符。只有当目标浏览器上启用了“silent-debugger-extension-api”标志后,才可以附加到扩展程序的后台网页。

string (可选)
targetId

从 Chrome 28 开始支持。

调试目标的不透明标识符。

TargetInfo

从 Chrome 28 开始支持。

调试目标的信息。
属性
enum of "page", "background_page", "worker", or "other" type

目标类型。

string id

目标标识符。

integer (可选)
tabId

从 Chrome 30 开始支持。

如果 type == 'page',则为标签页标识符。

string (可选)
extensionId

从 Chrome 30 开始支持。

如果 type == 'background_page',则为扩展程序标识符。

boolean attached

如果已附加调试器则为 true。

string title

目标网页的标题。

string url

目标 URL。

string (可选)
faviconUrl

目标的收藏夹图标 URL。

方法

attach

chrome.debugger.attach( Debuggee target, string requiredVersion, function callback)

将调试器附加到指定目标。

参数
Debuggee target

您希望附加的调试目标。

string requiredVersion

要求的调试协议版本("0.1"),您只能附加到主版本号匹配且次要版本号大于或等于指定版本号的调试对象。协议版本可以从这里获取。

function (可选)
callback

附加操作成功或失败后调用。回调函数不接受参数,如果附加失败,runtime.lastError 会设置为错误消息。

如果您指定了 callback 参数,它应该是一个如下形式的函数:

function() {...};

detach

chrome.debugger.detach( Debuggee target, function callback)

使调试器脱离指定目标。

参数
Debuggee target

您希望脱离的调试目标。

function (可选)
callback

脱离操作成功或失败后调用。回调函数不接受参数,如果脱离失败,runtime.lastError 会设置为错误消息。

如果您指定了 callback 参数,它应该是一个如下形式的函数:

function() {...};

sendCommand

chrome.debugger.sendCommand( Debuggee target, string method, object commandParams, function callback)

将指定命令发送至调试目标。

参数
Debuggee target

您需要发送命令的调试目标。

string method

方法名称,应该为远程调试协议中定义的某一个方法。

object (可选)
commandParams

从 Chrome 22 开始支持。

包含请求参数的 JSON 对象,这一对象必须遵循适用于指定方法的远程调试参数架构。

function (可选)
callback

响应正文。如果发送消息时产生错误,将不传递参数调用这一回调函数,并将 runtime.lastError 设置为错误消息。

如果您指定了 callback 参数,它应该是一个如下形式的函数:

function(object result) {...};
object (可选)
result

包含响应的 JSON 对象。响应的结构取决于方法名称,在远程调试协议中由命令描述的“returns”属性定义。

getTargets

chrome.debugger.getTargets(function callback)

从 Chrome 28 开始支持。

返回可用调试目标的列表。

参数
function callback

callback 参数应该是一个如下形式的函数:

function(array of TargetInfo result) {...};
array of TargetInfo result

包含可用调试目标对应的 TargetInfo 对象的数组。

事件

onEvent

当调试目标发出事件时产生。

addListener

chrome.debugger.onEvent.addListener(function callback)
参数
function callback

callback 参数应该是一个如下形式的函数:

function( Debuggee source, string method, object params) {...};
Debuggee source

产生这一事件的调试对象。

string method

方法名称,应该为远程调试协议中定义的某一个通知。

object (可选)
params

包含参数的 JSON 对象。响应的结构取决于方法名称,在远程调试协议中由命令描述的“returns”属性定义。

onDetach

当浏览器终止某个标签页的调试会话时产生。这会在标签页关闭,或者 Chrome 浏览器的开发者工具在已附加调试器的标签页中调用时发生。

addListener

chrome.debugger.onDetach.addListener(function callback)
参数
function callback

callback 参数应该是一个如下形式的函数:

function( Debuggee source, enum of "target_closed", "canceled_by_user", or "replaced_with_devtools" reason) {...};
Debuggee source

调试器脱离的调试对象。

enum of "target_closed", "canceled_by_user", or "replaced_with_devtools" reason

从 Chrome 24 开始支持。

连接终止的原因。

示例扩展程序