2012-04-11 13 views
1

で特定のボタンにonclickのイベントを追加します。ページ-MOD(Firefoxのアドオン)私はアドオンビルダーとFirefoxのアドオンを開発しようとしている

私は、Webベースのメーラのメールエディタを変更したいです。 (次のコードではYahoo!のメールサービスで試しています)

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

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

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

あなたのコンテンツスクリプトで正しくのonclickハンドラを追加していないように見えます。代わりに、このようなコードを使用する可能性があります:

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

ここでアドオンビルダーでこの作業例です:

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

一つの欠点コンテンツのスクリプトコードを追加するcontentScriptプロパティを使用しますデバッグが難しいということです。これを容易にするために、ポインタのカップル:

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

  • テストあなたはツールに行くことによって開くことができるFirefoxの「スクラッチパッド」、開発者ツールを使用してコード - >開発 - >スクラッチパッド。これを行うには:

    • はスクラッチパッド
    • にあなたのJSコードを貼り付け、あなたが
    • オープンスクラッチパッドを変更しているページを開くと、実行するために行く - > [ファイル名を指定して実行は、あなたのコードを実行するために
+0

ありがとうございました。 私は、スクラッチパッドで正常にダイアログが表示されたそれを試してみましたが、私はcontentScriptでコードを書いたとき、それが動作していないようです。 (ダイアログは表示されません) あなたの例は正しく働いています。 –

+0

JSエラーを検索すると、コードが機能していないことがわかります。たとえば、クリックイベントをバインドしようとしている要素が、JavaScriptによって作成された可能性があるため、ページが読み込まれた直後に存在しないことがあります。 – canuckistani

+0

おっと...あなたが指摘するまでエラーコンソールを見つけられませんでした... とにかく、あなたが言ったように、構成ページはJavaScriptによってロードされているようです。エラーコンソールに次のエラーが表示されます: TypeError:document.querySelector 「#send_top」)は nullのアドオンは、メール作成ページが、インデックスページをロードしていないようです。 コンポジションページにはURLに#_pg =アンカーを作成しています。このアンカーを削除すると、インデックスページが表示されますが、#send_top IDを持つ要素はありません。 –

関連する問題