chrome.devtools.inspectedWindow.* APIs

chrome.devtools.inspectedWindow 用以和当前窗口进行交互:获取当前调试页面的标签ID,评估当前调试页面上下文的代码,加载页面或是获取页面内的资源列表。

访问 DevTools 接口介绍 获取使用开发人员工具 API 的简介。

概览

tabId 属性是标签页(tab)的标识,您可以通过chrome.tabs.* 进行调用,然而,请注意考虑到安全性 chrome.tabs.* API并没有暴露给开发人员工具扩展页,因此,您需要传递标签ID(tab ID)给background page,然后在此页面调用chrome.tabs.* API。

eval()方法使扩展可以在检查页面的主框架内执行JavaScript代码。当在正确的上下文中使用,该方法很强大,反之,若使用不当,该方法很危险。当您需要 eval() 方法提供的特殊方法时,请使用chrome.tabs.executeScript() 方法 。

下面是val()chrome.tabs.executeScript() 的主要区别 :

重要: 出于如上所言的安全考虑,当不需要访问检查页JavaScript状态时,chrome.tabs.executeScript()方法是扩展访问检查页DOM数据的首选方式。

reload() 方法可用来重新加载检查页。此外,调用者可以对用户代理字符串,页面加载前注入脚本和强制缓存资源重新加载选项进行指定覆盖。

使用getResources() 调用和 onResouronResourceContent事件可以获取检查页的资源列表(文档,样式,脚本,图片等)。Resource 类的getContent()setContent() 方法连同onResourceContentCommitted 事件可用来修改资源内容,比如,通过外部编辑器。

示例

下面的代码是检查页用来检查jQuery的版本:

chrome.devtools.inspectedWindow.eval(
    "jQuery.fn.jquery",
     function(result, isException) {
       if (isException)
         console.log("the page is not using jQuery");
       else
         console.log("The page is using jQuery v" + result);
     }
);

您可以在Samples中找到更多使用开发者工具API的示例。

API参考:chrome.devtools.inspectedWindow

属性

tabId

chrome.devtools.inspectedWindow.tabId
tabId
( integer )
被检查标签的ID.该ID可能与 chrome.tabs.* API一起使用

方法

eval

chrome.devtools.inspectedWindow.eval(string expressionfunction callback)

在检查页的主框架上下文检查JavaScript表达式。表达式必须为一个JSON兼容对象,否则抛出异常。

参数

expression
( string )
被检测的表达式
callback
( optional function )
评估结束时调用的函数

回调函数

当指定 callback 参数时,必须是一个如下所示的函数:

function(object result, boolean isException) {...};
result
( object )
评估的结果
isException
( boolean )
设置当检查表达式时是否捕捉异常

getResources

chrome.devtools.inspectedWindow.getResources(function callback)

检索评估页面的资源列表

参数

callback
( function )
当请求完成时检索资源列表的函数

Callback function

回调参数应该指定如列函数:

function(array of Resource resources) {...};
resources
( array of Resource )
页面的资源

reload

chrome.devtools.inspectedWindow.reload(object reloadOptions)

重新加载检查页.

Parameters

reloadOptions
( optional object )
Undocumented.
ignoreCache
( optional boolean )
若为true,加载者会忽略 load 事件触发之前的所有检查页资源的缓存。效果与在检查窗口或开发人员工具窗口按下 Ctrl+Shift+R组合键。
userAgent
( optional string )
若指定该项,会覆盖检查页面加载资源时发送的HTTP头部的 User-Agent 值。同时也会覆盖返回给检查页内运行的任何脚本的 navigator.userAgent 属性。
injectedScript
( optional string )
若指定该项,脚本将在加载时在所有frame内的脚本之前注入到检查页的每个frame中。若用户按下 Ctrl+R键,在随后的加载中脚本将不会被注入。

事件

onResourceAdded

chrome.devtools.inspectedWindow.onResourceAdded.addListener(function(Resource resource) {...});

当新资源被添加到检查页面时触发

Listener parameters

resource
( Resource )
Undocumented.

onResourceContentCommitted

chrome.devtools.inspectedWindow.onResourceContentCommitted.addListener(function(Resource resource, string content) {...});

当新修订的资源提交时触发(例如,用户在开发人员工具里保存资源的一个编辑过的版本)。

Listener parameters

resource
( Resource )
Undocumented.
content
( string )
资源的新内容

类型

Resource

( object )
检查页内的资源,比如文档,脚本或图片。
url
( string )
资源的URL

Methods of Resource

getContent

resource.getContent(function callback)

获取资源的内容

参数

callback
( function )
当请求完成时检索资源内容的函数

Callback function

回调参数 应如下例所示:

function(string content, string encoding) {...};
content
( string )
资源的内容(可能的编码)。
encoding
( string )
如果内容未被编码时为空,否则应为编码名称。目前只支持base64编码。

setContent

resource.setContent(string contentboolean commitfunction callback)

设置资源内容

参数

content
( string )
资源的新内容。目前仅支持文本类型的资源。
commit
( boolean )
用户完成资源编辑并资源内容固定没变为true,用户编辑资源过程由微小变化时为false。
callback
( optional function )
请求完成时调用的函数

Callback function

若指定 回调参数,应如下例所示:

function(object error) {...};
error
( optional object )
若成功设置了资源内容应设置为undefined。否则用以描述错误。