Chrome 内容脚本在给定标签页的所有网页中运行
Chrome content script run in all pages in a given tab
我有一个带有弹出窗口的Chrome扩展程序(内容脚本)。当用户单击弹出窗口中的"开始"按钮时,我希望打开一个新选项卡以访问URL(例如 www.test.com),并将内容脚本注入该选项卡。不仅执行一次,而且注入,以便它在同一选项卡上的 (www.test.com/*) 上工作。不是在其他选项卡中 - 只是那个。
这是我现在拥有的:
chrome.tabs.create({
'url': 'http://test.com/shop/new'
}, function(tab) {
chrome.tabs.executeScript(tab.id, {
'file': 'script.js'
});
});
但是,正在使用chrome.tabs.executeScript
,它只执行一次脚本。该脚本将页面重定向到"http://test.com/shop/new/xxx",但由于脚本只执行一次,因此当页面更改时它会停止工作。再次 - 我怎样才能使脚本注入到该选项卡中的所有"http://test.com/shop/*"页面中?
一个好主意是创建一个始终注入到http://test.com/shop/*
中的脚本(通过清单):
"content_scripts" : [
{
matches: ["http://test.com/shop/*"],
js: ["script.js"]
}
],
然后,在脚本中,询问后台页面是否应为此 ID 处于活动状态:
// script.js
chrome.runtime.sendMessage({shouldIRun : true}, function(response){
if(response) {
// Actually do stuff
}
});
在后台脚本中,记录您希望它应用于的选项卡:
// Background script
var activeTabs = {}; // Slightly more difficult with event pages
// At some point when you enable it, e.g. in a browserAction.onClicked listener
activeTabs[tabId] = true;
chrome.runtime.onMessage.addListener(function(message, sender, sendResponse) {
if(message.shouldIRun) {
// Double negation to ensure true/false
sendResponse(!!activeTabs[sender.tab.id]);
}
});
// It's a good idea to clear the stray entries
chrome.tabs.onRemoved.addListener(function(tabId, removeInfo) {
delete activeTabs[tabId];
});
// Sometimes this can also happen
chrome.tabs.onReplaced.addListener(function(addedTabId, removedTabId) {
if(!!activeTabs[removedTabId]) activeTabs[addedTabId] = true;
delete activeTabs[removedTabId];
});
相关文章:
- 如何在加载网页时运行脚本
- 在父网页的iframe中运行JavaScript
- 从Spring应用程序运行PhantomJS以获取网页缩略图
- 是否可以从在Firefox或IE的网页中运行的Javascript启动Windows进程
- 在HTML网页中运行python方法
- 在网页中运行多个功能的Javascript
- 有没有办法阻止(特定的)恶意脚本在我自己的网页上运行
- 在小提琴完美运行,但 JQuery 对网页没有影响
- 模板函数在加载网页时运行两次
- 带有谷歌地图和天气图像的网页只能在IE中运行,在Chrome中无效
- 等待Javascript网页抓取功能完成,然后再运行下一页
- 是否可以从网页运行节点脚本
- 网页:当我在本地运行时出现某些图像,但在互联网上显示时会消失
- Javascript没有运行,只是在空白网页上打印出整个代码
- 每次点击网页操作按钮时,Chrome 扩展程序都不会运行
- 如何使图标网页运行
- 如何从父网页运行 iFrame 的脚本
- 从网页运行谷歌应用程序脚本
- 获取网页源代码后,网页运行Javascript - Java
- 如何避免“Internet Explorer 限制此网页运行脚本或 ActiveX 控件”消息