[英]How to execute my content script on a newly opened chrome tab?
我正在从 Web 门户调用 Chrome 扩展程序以在新选项卡中打开 URL,并在新打开的选项卡上执行executeScript
:
清单文件
"externally_connectable": {
"matches": ["http://localhost:3000/*"]
},
"permissions": ["tabs", "http://*/*", "https://*/*"]
背景.js
// listen to webportal
chrome.runtime.onMessageExternal.addListener(
function(request, sender, sendResponse) {
a = chrome.tabs.create({ url: request.openUrlInEditor });
chrome.tabs.insertCSS(a.id, { file: "combined.css" });
chrome.tabs.executeScript(a.id, { file: "combined.js" });
}
);
如果我尝试在扩展单击时执行insertCSS
和executeScript
,它工作正常
背景.js
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.insertCSS(tab.id, { file: "combined.css" });
chrome.tabs.executeScript(tab.id, { file: "combined.js" });
});
chrome.tabs.create
不返回任何内容。
要使用创建的选项卡,您可以将方法包装在其回调中,该回调将创建的选项卡作为参数:
chrome.runtime.onMessageExternal.addListener(function(request, sender, sendResponse) {
chrome.tabs.create({ url: request.openUrlInEditor }, function(tab) {
chrome.tabs.insertCSS(tab.id, { file: "combined.css" });
chrome.tabs.executeScript(tab.id, { file: "combined.js" });
});
));
在向我的扩展manifest.json授予活动标签权限后,我自己解决了我的问题
"permissions": ["tabs", "http://*/*", "https://*/*","activeTab"]
后台.js
// listen to webportal
chrome.runtime.onMessageExternal.addListener(
function(request, sender, sendResponse) {
chrome.tabs.create({ url: request.openUrl },function(tab) {
chrome.tabs.insertCSS(tab.id, { file: "combined.css" });
chrome.tabs.executeScript(tab.id, { file: "combined.js" });
});
}
);
内容.js
chrome.browserAction.onClicked.addListener(buttonClicked)
function buttonClicked(tab) {
console.log("button clicked", tab)
chrome.tabs.create({ url: LinkOfNewTab }, function(tab2) {
console.log(tab2)
extensionButtonClicked = true
})
}
背景.js
chrome.tabs.onUpdated.addListener(function(tabId,changeInfo,tab){
if (extensionButtonClicked) {
if (tab.url === Link1) {
chrome.tabs.executeScript(tab.id, {file: "content.js"} );
}
if (tab.url === Link2) {
chrome.tabs.executeScript(tab.id, {file: "content2.js"} );
}
}
});
说明
'chrome.browserAction.onClicked' event will listen for icon when you click and 'chrome.tabs.create' will open up a new code and 'chrome.tabs.onUpdated' will fire every time when page reload or new tab is opened.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.