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()
的主要区别 :
eval()
方法不会为将评估的代码使用独立的空间,所以检查窗口的JavaScript状态是可以通过代码访问。使用该方法来访问检查页面的JavaScript状态是必须的。-
正在被评估代码的执行上下文包括开发人员工具控制
API。比如,代码可以使用
inspect()
和$0
。 - 评估的代码可能会返回一个值传递给扩展回调.返回的值必须是一个有效的JSON对象(它可能仅包含原生的JavaScript类型和非循环引用其他JSON对象)。当处理从检查页获取的数据时,请特别注意-因为执行的上下文主要由检查页控制,一个含有恶意代码的页面可能会影响到返回给扩展的数据.
重要: 出于如上所言的安全考虑,当不需要访问检查页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
方法
eval
在检查页的主框架上下文检查JavaScript表达式。表达式必须为一个JSON兼容对象,否则抛出异常。
参数
-
expression
( string )
- 被检测的表达式
-
callback
( optional function )
- 评估结束时调用的函数
回调函数
当指定 callback 参数时,必须是一个如下所示的函数:
function(object result, boolean isException) {...};
-
result
( object )
- 评估的结果
-
isException
( boolean )
- 设置当检查表达式时是否捕捉异常
getResources
检索评估页面的资源列表
参数
-
callback
( function )
- 当请求完成时检索资源列表的函数
Callback function
回调参数应该指定如列函数:
function(array of Resource resources) {...};
-
resources
( array of Resource )
- 页面的资源
reload
重新加载检查页.
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键,在随后的加载中脚本将不会被注入。
-
ignoreCache
事件
onResourceAdded
onResourceContentCommitted
当新修订的资源提交时触发(例如,用户在开发人员工具里保存资源的一个编辑过的版本)。
Listener parameters
-
resource
( Resource )
- Undocumented.
-
content
( string )
- 资源的新内容
类型
Resource
-
url
( string )
- 资源的URL
Methods of Resource
getContent
获取资源的内容
参数
-
callback
( function )
- 当请求完成时检索资源内容的函数
Callback function
回调参数 应如下例所示:
function(string content, string encoding) {...};
-
content
( string )
- 资源的内容(可能的编码)。
-
encoding
( string )
- 如果内容未被编码时为空,否则应为编码名称。目前只支持base64编码。
setContent
设置资源内容
参数
-
content
( string )
- 资源的新内容。目前仅支持文本类型的资源。
-
commit
( boolean )
- 用户完成资源编辑并资源内容固定没变为true,用户编辑资源过程由微小变化时为false。
-
callback
( optional function )
- 请求完成时调用的函数
Callback function
若指定 回调参数,应如下例所示:
function(object error) {...};
-
error
( optional object )
- 若成功设置了资源内容应设置为undefined。否则用以描述错误。