Javascript 点击和页面加载时的Chrome扩展
有没有办法让chrome扩展在页面加载和点击时运行 如果用户在某个页面上,我希望扩展运行并将脚本附加到已加载页面的页眉 然后,我希望用户能够单击扩展,该扩展运行一个不同的脚本来调用页面上的脚本 我在页面加载中看到了以下内容:Javascript 点击和页面加载时的Chrome扩展,javascript,json,google-chrome,google-chrome-extension,Javascript,Json,Google Chrome,Google Chrome Extension,有没有办法让chrome扩展在页面加载和点击时运行 如果用户在某个页面上,我希望扩展运行并将脚本附加到已加载页面的页眉 然后,我希望用户能够单击扩展,该扩展运行一个不同的脚本来调用页面上的脚本 我在页面加载中看到了以下内容: chrome.tabs.onUpdated.addListener( function (tabId, changeInfo, tab) { if (changeInfo.status == 'complete' && tab.active) {
chrome.tabs.onUpdated.addListener( function (tabId, changeInfo, tab) {
if (changeInfo.status == 'complete' && tab.active) {
// run script/code here
}
})
我在点击时使用了以下内容:
chrome.browserAction.onClicked.addListener(function (tab) {
if (tab.url.indexOf(".mydomain.com/") != -1) {
chrome.tabs.executeScript(tab.id, {
"file": "contentscript.js"
}, function () {
console.log("Script Executed...");
});
} else {
var wrongTab = chrome.i18n.getMessage("wrongTab");
alert(wrongTab);
}
});
但是我想将它们合并在一起,因为在页面中添加脚本似乎并不总是正确加载:/用于始终加载您应该使用的特定页面,例如 这将自动应用于(重新)加载时匹配URL上的任何页面 当你想在点击时注入一个脚本(只在与第一个脚本相同的域中的页面上)时,我没有完全理解。如果要向现有内容脚本发送信号以执行某些操作,最好的方法是: 如果您想在任何页面中执行某些操作,而不仅仅是在注入的页面中,单击按钮-然后您必须使用
chrome.tabs.executeScript
。如果您希望该按钮仅在某些页面上激活,请考虑使用A。
另外,请注意所需的权限。如果要在单击处理程序中的选项卡上进行操作,这是一件好事
"content_scripts" : [
{
"matches" : ["*://*.mydomain.com/*"],
"js" : ["contentscript.js"]
}
],
// contentscript.js
chrome.runtime.onMessage.addListener(function(message, sender, sendResponse){
if(message.doSomething){
/* do something with message.data */
}
});
// background.js
chrome.browserAction.onClicked.addListener(function (tab) {
chrome.tabs.sendMessage(
tab.id,
{doSomething: true, data: "anything"},
function(response) {
if(chrome.runtime.lastError) {
// There was no script listening
}
}
);
});