铬对象或铬.制表符对象不能从除后台脚本以外的脚本访问
chrome object or chrome.tabs object not accessible from script other than a background script
我正在尝试chrome扩展API,我遇到了一个我不理解的问题,
我有一个背景脚本"背景。js"和内容脚本"content_script.js"。
background.js
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.executeScript({code:"console.log('background script')"});
chrome.tabs.executeScript({file:"javascript/content_script.js"});
});
内容脚本chrome.tabs.executeScript({code:"console.log('content_script')"});
后台脚本中的console.log工作完美,但在content_script中的一个,我得到一个错误-> "无法读取未定义的属性'executeScript' "
这意味着我不能访问chrome对象,或chrome。选项卡对象从内容脚本。为什么会这样?
内容脚本在网页上下文中运行,而不是扩展名
内容脚本不能访问所有Chrome api。根据官方文件:
内容脚本是在web上下文中运行的JavaScript文件页面。通过使用标准的文档对象模型(DOM),它们可以阅读浏览器访问的网页的详细信息,或对其进行更改他们。
下面是一些内容脚本可以做的例子:
- 查找网页中未链接的url并将其转换为超链接
- 增大字体大小使文本更清晰
- 查找和处理DOM中的微格式数据
后台脚本是一个长时间运行的脚本,用于管理一些任务或状态。而后台脚本可以访问所有Chrome api。
如果您想在内容脚本和背景脚本之间传递信息,请使用:Chrome Message Passing
相关文章:
- 在使用客户端脚本时拾取JSON对象
- 如何在java脚本中传递对象数组
- Firefox插件SDK:在侧边栏和主脚本之间通信对象
- inDesign脚本”;对象无效”;
- 如何打开文件对象(HTML)并在谷歌应用程序脚本中解析它
- 如何使用巴别塔脚本's对象在Javascript中
- 如何为输出Json对象的ajax调用编写客户端脚本
- 正在等待加载脚本对象
- 将谷歌脚本对象传递给HTML模板
- 如何将特定的Java脚本对象传递给PHP,而不输出“数组”
- 如何在另一个对象中获取java脚本对象的内容
- 如何从.csv文件导入数据并将其转换为java脚本对象
- JS:调用给定脚本对象的特定函数
- 运行故障&纱线运行&;在package.json中的脚本对象上
- 如何获得这个Java脚本对象的所需顺序
- 从内容脚本访问后台脚本对象
- 在node.js中显示Java脚本对象内容
- javascript脚本'对象不'不支持此属性或方法'
- 使用createObject (google maps)在coldfusion查询中创建java脚本对象
- 无法访问内容脚本对象方法