Chrome扩展程序 - 仅在单击按钮时运行内容脚本

Dr *_*use 6 javascript google-chrome-extension

我看起来很好看,但我似乎无法找到并回答这个问题(好吧,无论如何,这个问题对我有用).

我制作了一个Chrome扩展程序,只需单击图标就可以运行我的内容脚本中的代码,但它会在页面加载后立即运行.有没有办法防止这种情况发生?我可以为run_at输入的任何可能的字符串都不能满足这一要求.

以下是两个脚本中的示例代码:

内容脚本:

function runIt() {
    console.log('working');
}
runIt();
Run Code Online (Sandbox Code Playgroud)

background.js:

chrome.browserAction.onClicked.addListener(function(activeTab) {
    chrome.tabs.executeScript(null, {file: "content.js"});
});
Run Code Online (Sandbox Code Playgroud)

它会在页面加载后立即记录"工作",然后在每次按钮后单击.有没有办法在页面加载后立即停止运行?

提前感谢所有贡献.

aps*_*ers 12

browserAction.onClicked后台页面中的代码完全符合您的要求.如果要content.js在页面加载时停止作为内容脚本运行,则不要将其作为内容脚本包含在清单中.

具体来说,在您的manifest.json文件中,您有一些看起来像这样的行:

"content_scripts": [
  {
    "matches": ["*://*/*"],
    "js": ["content.js"]
  }
],
Run Code Online (Sandbox Code Playgroud)

只需删除这些行,脚本将在页面加载时停止运行,而您的单击侦听器代码将继续工作.

  • @DrPighouse你说你"做得与众不同"; 您应该更新您的问题,说明您为帮助其他人使用Chrome扩展程序所做的更改. (12认同)