我试图让我的Chrome扩展程序在加载新页面时运行函数init()
,但我在尝试了解如何执行此操作时遇到问题。据我了解,我需要做的background.html如下:Chrome扩展代码和内容脚本vs注入脚本
- 使用
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()'?我应该注入所有的JavaScript吗?当用户点击Browser Action图标时,通常调用'init()','init()'触发一堆其他函数。 – Jon 2012-03-28 21:51:04
@ user1277607当它必须访问任何页面的全局变量时,注入脚本。当'function init'必须访问页面和扩展代码时,请使用内容脚本。请参阅** [链接的答案](http://stackoverflow.com/a/9517879/938089?building-a-chrome-extension-inject-code-in-a-page-using-a-content-script)* *查看如何注入脚本,以及** [这个答案](http://stackoverflow.com/a/9636008/938089?chrome-extension-retrieving-gmails-original-message)**的实施指南内容脚本必须访问页面的变量。 – 2012-03-28 21:59:38
非常感谢。它工作得很漂亮:) – Jon 2012-03-29 00:01:41