This page was saved using WebZIP 7.0.3.1030 offline browser on 12/24/13 11:31:36.
Address: https://crxdoc-zh.appspot.com/extensions/debugger.html
Title: chrome.debugger - Google Chrome 扩展程序开发文档(非官方中文版)  •  Size: 46335

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 的示例。

chrome.debugger 参考

类型

Debuggee

调试对象的标识符,必须指定 tabId 或 extensionId 中的某一个。

Debuggee 的属性

tabId ( optional integer )

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

extensionId ( optional string )

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

targetId ( optional string )

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

TargetInfo

调试目标的信息。

TargetInfo 的属性

type ( enum of "page", "background_page", "worker", or "other" )

目标类型。

id ( string )

目标标识符。

tabId ( optional integer )

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

extensionId ( optional string )

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

attached ( boolean )

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

title ( string )

目标网页的标题。

url ( string )

目标 URL。

faviconUrl ( optional string )

目标的收藏夹图标 URL。

方法

attach

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

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

参数

target ( Debuggee )

您希望附加的调试目标。

requiredVersion ( string )

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

callback ( optional function )

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

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

function() {...};

detach

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

使调试器脱离指定目标。

参数

target ( Debuggee )

您希望脱离的调试目标。

callback ( optional function )

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

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

function() {...};

sendCommand

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

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

参数

target ( Debuggee )

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

method ( string )

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

commandParams ( optional object )

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

callback ( optional function )

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

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

function(object result) {...};

result ( optional object )

包含响应的 JSON 对象。响应的结构取决于方法,在远程调试协议中定义。

getTargets

chrome.debugger.getTargets(function callback)

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

参数

callback ( function )

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

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

result ( array of TargetInfo )

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

事件

onEvent

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

addListener

chrome.debugger.onEvent.addListener(function callback)

参数

callback ( function )

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

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

source ( Debuggee )

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

method ( string )

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

params ( optional object )

包含响应的 JSON 对象。响应的结构取决于方法,在远程调试协议中定义。

onDetach

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

addListener

chrome.debugger.onDetach.addListener(function callback)

参数

callback ( function )

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

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

source ( Debuggee )

调试器脱离的调试对象。

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

连接终止的原因。