Google chrome Can';单击按钮时无法运行扩展

Google chrome Can';单击按钮时无法运行扩展,google-chrome,google-chrome-extension,Google Chrome,Google Chrome Extension,我是chrome扩展(老实说还有javascript)的新手,我已经创建了一个简单的脚本,从页面复制了几个DOM元素,并在页面加载时启动了一个包含这些元素的页面。这一切都很好,但是数据来源的页面可以根据用户输入进行更改-即如果他们应用某种过滤器 我希望能够点击扩展图标并运行一次,而不是在页面最初加载时运行脚本。因此,用户可以应用他们的过滤器,对页面运行扩展,并在新的弹出窗口中获取新信息 在清单文件中: "content_scripts": [ { "matches": ["https

我是chrome扩展(老实说还有javascript)的新手,我已经创建了一个简单的脚本,从页面复制了几个DOM元素,并在页面加载时启动了一个包含这些元素的页面。这一切都很好,但是数据来源的页面可以根据用户输入进行更改-即如果他们应用某种过滤器

我希望能够点击扩展图标并运行一次,而不是在页面最初加载时运行脚本。因此,用户可以应用他们的过滤器,对页面运行扩展,并在新的弹出窗口中获取新信息

在清单文件中:

"content_scripts": [
  {
    "matches": ["https://www.oddsmonkey.com/*"],
    "js": ["content.js"],
    "all_frames": true
  }
  ],
"background": {
"scripts": ["background.js"]
在background.js中:

chrome.browserAction.onClicked.addListener(function(tab) {

    alert("Hello! I am an alert box!!");

});
很明显,在点击按钮的时候,我会得到一个警告框

我环顾了很多地方,似乎找不到一种方法来获取background.js页面(我知道点击按钮需要这个页面)来执行content.js。我看到了消息传递的概念,但我不需要提供任何东西,也不需要从内容脚本中获取任何东西,我只想让它运行

希望有人能回答一个简单的问题


干杯

要访问您需要的网页,请参见,可能@wOxxOm我有一个内容脚本(这已经很好地工作了)。我只需要它再次运行时,用户点击按钮!检测DOM更改和使用消息似乎过于复杂,因为我怀疑这是一项非常简单的任务。如果您的用户交互是从用户单击
browserAction
按钮开始的,那么应该向内容脚本注入manifest.json
content\u script
条目。这样,您的内容脚本就不会被注入到每个页面中等待使用,从而给浏览器带来负担。使用
chrome.tabs.executeScript()
,脚本可以在注入时开始运行。根据@wOxxOm的建议,我最终实际使用了MutationObserver。这似乎是一个更优雅的解决方案,因为我的chrome扩展的内容随着过滤器的应用而不断更新。谢谢你的建议。虽然这个代码片段可以解决这个问题,但它确实有助于提高你文章的质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。还请尽量不要用解释性注释挤满你的代码,这会降低代码和解释的可读性!无论出于什么原因,我都无法按预期工作。单击图标并没有导致java脚本运行,尽管这是我的问题的常见解决方案。
chrome.browserAction.onClicked.addListener(function(tab){
    chrome.tabs.executeScript( tab.id, { file: 'content.js' })
});
// this needs an "activeTab" permission.