4

アドオンビルダーでFirefoxアドオンを開発しようとしています。

Web ベースのメーラーのメール エディターを変更したいと考えています。(以下のコードではYahoo! JAPANのメールサービスで試しています。)

ユーザーが送信ボタンを押したときに特定のコードを実行したい。

アドオンコードは次のとおりです。

main.js

var self = require("self");
var pageMod = require("page-mod");


pageMod.PageMod({
    include: "*.mail.yahoo.co.jp",
    contentScriptWhen: 'end',
    contentScript: "document.getElementById('send_top').setAttribute('onclick', 'alert(\"blabla\")');"
});

メール編集ページのボタン:

<input id="send_top" class="inputbutton" type="submit" title="Submit an email"
       value="Submit" name="action_msg_send" accesskey="9">

ユーザーが「送信」ボタンを押すと、ダイアログを表示したい。

4

1 に答える 1

12

コンテンツ スクリプトに onclick ハンドラを正しく追加していないようです。代わりに、次のようなコードを使用できます。

document.querySelector('#send_top').onclick = function() { 
    alert('bla bla'); 
}

アドオン ビルダーでのこれの実際の例を次に示します。

https://builder.addons.mozilla.org/addon/1048430/latest/

contentScript プロパティを使用してコンテンツ スクリプト コードを追加することの欠点の 1 つは、デバッグが難しいことです。これを簡単にするためのいくつかの指針:

  • 常に「contentScriptFile」を使用し、アドオンのデータ フォルダーにある別の js ファイルにコードを記述します。

  • Firefox の「Scratchpad」開発者ツールを使用してコードをテストします。このツールは、[ツール] -> [開発者] -> [ScratchPad] に移動して開くことができます。これをする:

    • 変更中のページを開く
    • スクラッチパッドを開く
    • JS コードを Scratchpad に貼り付けます
    • Execute -> Run に移動してコードを実行します
于 2012-04-11T16:35:50.880 に答える