【问题标题】:Firefox addon builder--can't get the content script to workFirefox 插件生成器 - 无法使内容脚本工作
【发布时间】:2012-04-29 04:31:04
【问题描述】:

我有一个带有按钮的插件,可以打开一个带有几个按钮的面板。当按下按钮时,应该更改keyword.URL 首选项,但事实并非如此。

这里是main.js:

data = require("self").data

var panel = require("panel").Panel({
  height: 135,
  width: 260,
  contentURL: data.url("popup.html"),
  contentScriptFile: data.url("clicklisten.js"),
  onMessage: function(contentScriptMessage) {
    require("preferences-service").set('keyword.URL', contentScriptMessage);
  }
  //I think the problem is right there, but i have no idea why.
});

var button = require("widget").Widget({
  id: "search-engine-button",
  label: "Set search engine",
  contentURL: data.url("Refresh.ico"),
  panel: panel
});

这是 HTML 按钮的示例:

<button class="searchButton" id="addons" _keywordURL="https://addons.mozilla.org/en-US/firefox/search/?q=">Add-ons</button>

这是 clicklisten.js(内容脚本):

// Add event listener
var buttons = document.getElementByClassName("searchButton");
for (var i = 0; i < buttons.length; i++)
  buttons[i].addEventListener("click", changekeywordurl, false);

// Send a message to the extension if a button is clicked
function changekeywordurl(event)
{
  var button = event.target;
  self.postMessage(button.getAttribute("_keywordURL"));
}

我觉得我已经尝试了我能想到的一切,但我无法让它发挥作用。

【问题讨论】:

    标签: javascript firefox firefox-addon add-on firefox-addon-sdk


    【解决方案1】:

    在扩展程序中搜索错误时,检查错误控制台通常是一个很好的第一步。如果您按 Ctrl-Shift-J 打开它,您应该会看到:

    Error: An exception occurred.
    Traceback (most recent call last):
      File "resource://.../clicklisten.js", line 2, in 
        var buttons = document.getElementByClassName("searchButton");
    TypeError: document.getElementByClassName is not a function
    

    这是因为该函数被称为getElementsByClassName(因为缺少s)。如果您更改为正确的名称,一切都会正常工作。

    PS:我认为您从我对上一个问题的回答中复制了该错误(我没有在那里测试代码)。但是看看https://stackoverflow.com/a/10309914/785541 - 似乎你没有,我的代码没有这个错误:)

    【讨论】:

    • 谢谢!我一定把它搞砸了……很奇怪。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-25
    • 2015-06-20
    相关资源
    最近更新 更多