0

Firefox Add-on Builder で、検索バーが使用する URL を変更するボタンを作成しようとしています。URL を変更するために、ボタンがクリックされたときに表示されるパネルがあり、パネルには一連のボタンがあります。

2番目の.jsファイル(ではない)には、モジュールを使用して関数をmain.js変更するはずの関数があります。keyword.urlpreferences-service

これを行うために使用しているコードは次のとおりです。

function changekeywordurl(url) {
    alert('Search Engine Changed');
    require("preferences-service").set('keyword.url', url);
}

パネルの HTML は次のとおりです。

<button onclick="changekeywordurl('http://search.yahoo.com/search?p=')">Yahoo</button>

私が本当にばかげた間違いをしている場合は申し訳ありません。これは私の最初の試みであり、アドオンです。

4

1 に答える 1

2

拡張機能によって読み込まれた HTML ページには、特別な権限はありません。通常の Web ページと同じです。特に、関数require()はこのコンテキストでは定義されていません。コンテンツ スクリプトは拡張機能と通信できるため、コンテンツ スクリプトをパネルにロードする必要があります。このコンテンツ スクリプトは次のようになります。

// Add event listener in the content script, the page cannot "see" content script
// functions
var buttons = document.getElementsByClassName("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"));
}

ページ内のボタンは次のようになります。

<button _keywordURL="http://search.yahoo.com/search?p="></button>

その後、拡張機能はコンテンツ スクリプトからのメッセージをリッスンし、必要な SDK モジュールを使用できます。

于 2012-04-25T05:39:23.860 に答える