我正在尝试让我的Chrome扩展在每次加载新页面时运行init()
函数,但我很难理解如何实现。据我所知,我需要在background.html中执行以下操作:
- 使用
chrome.tabs.onUpdated.addListener()
检查页面何时发生更改 - 使用
chrome.tabs.executeScript
运行脚本。
这是我目前的代码:
//background.html
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
chrome.tabs.executeScript(null, {code:"init();"});
});
//script.js
function init() {
alert("It works!");
}
我也想知道init()函数是否可以访问其他JS文件中的函数?
chrome.tabs.onUpdated
会触发两次的提示。那么我的问题是,我应该如何注入init()
呢?我应该注入所有的 JavaScripts 吗?通常当用户点击浏览器操作图标时,init()
会被调用,并触发一系列其他函数。 - Joninit函数
需要访问页面和扩展代码时,请使用内容脚本。 请参见 链接答案 以了解如何注入脚本,以及 此答案 来了解如何实现需要访问页面变量的内容脚本的指南。 - Rob Wchrome.tabs.executeScript
,console
,localStorage
可以使用,尽管它们是全局窗口对象。但是应用程序在窗口命名空间中定义的对象(例如window.ContextHub = window.ContextHub || {};
)则不行。是否有允许的白名单集合和不允许的黑名单集合? - Sandeep Kumar