2012-04-27 13 views
0

私はいくつかのボタンが付いたパネルを開くボタン付きのアドオンを持っています。ボタンを押すとと入力してと入力してkeyword.URLの設定を変更します。ここでFirefox addon builder - 動作させるコンテンツスクリプトを取得できません

は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")); 
} 

私は考えることができるすべてを試したような気がしますが、これを動作させることはできません。

答えて

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 

機能がgetElementsByClassNamesが欠落していると)と呼ばれているためだこと。正しい名前に変更すると、すべて正常に動作します。

PS:以前の質問(私はそこでコードをテストしていませんでした)に私の答えからその間違いをコピーしたと思いました。しかし、https://stackoverflow.com/a/10309914/785541を見て - それはあなたがしなかったようだ、私のコードはこのミスを持っていない:)

+0

ありがとう!私はそれをどのように...混乱させたのだろうか。 – Ian

関連する問題