【问题标题】:Chrome extensionChrome 扩展程序
【发布时间】:2011-12-05 21:17:40
【问题描述】:

我刚刚做了一个 Chrome 扩展程序。我按照这个tutorial 在我的工具栏中获得了一个不错的按钮。现在,如果我加载一个页面,我的扩展程序中的 javascript 就会被执行。

不幸的是,如果我单击工具栏中的扩展程序按钮,什么也没有发生。

问题:如何让js在我点击工具栏中的扩展按钮时执行?

感谢您的帮助。

编辑 我加了 background.html 还是不行:

<html>
<head>
<script>
  // Called when the user clicks on the browser action.
  chrome.browserAction.onClicked.addListener(function(tab) {
    var action_url = "javascript:mathjax.js";
    chrome.tabs.update(tab.id, {url: action_url});
  });
</script>
</head>
</html>

【问题讨论】:

    标签: google-chrome-extension


    【解决方案1】:

    你有两个选择。或者,您可以在manifest.json 中指定"popup": "popup.html",然后将代码放入popup.html。在这种情况下,代码将在弹出窗口中执行(当然您可以与后台页面或其他任何内容进行通信)。

    通过将侦听器附加到chrome.browserAction.onClicked 来在background.html 中放置回调可能更好。

    【讨论】:

    • 可爱,谢谢,你能告诉我如何将监听器附加到 onClicked 上吗?
    • 我把这个放到了background.html中,还是触发不了:&lt;!doctype html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;Background Page&lt;/title&gt; &lt;script chrome.browserAction.onClicked.addListener(function(tab) { chrome.tabs.executeScript(null, {code:"mathjax.js"}); });&gt;&lt;/script&gt; &lt;/head&gt; &lt;body&gt; &lt;/body&gt; &lt;/html&gt;
    • 奇怪...我将在今天晚些时候玩它,看看发生了什么。如果您只是尝试在单击时显示警报会发生什么?
    • 谢谢!我认为问题出在 mathjax 队列上。我发布了一个单独的问题:*.com/questions/8397331/chrome-extension-revisited
    【解决方案2】:

    Chrome 扩展不支持 background.html 中的内联 javascript 代码。您必须指定外部 javascript 文件。此外,您可以直接在后台属性的清单文件中指定外部文件,而不是指定 background.html。

    我已经回答了类似的问题here

    【讨论】: