私の最終目標は、サイトにHTMLボタンを挿入し、拡張機能のカスタムコードモジュールで定義された関数を起動させるfirefox拡張を作成することです。Firefoxの拡張機能にHTMLボタンを挿入してイベントをトリガーするには?
私はこのquestionにニコライの答えを実装しようとしました。
0x80070057が(NS_ERROR_ILLEGAL_VALUE)[nsIDOMEventTarget.dispatchEvent]「nsresult: 『0x80070057が(』キャッチされない例外を:[例外を...」コンポーネントが故障コードを返し、私はボタンをクリックすると、私はFirebugの中で次のエラーを取得するのに作成しましたNS_ERROR_ILLEGAL_VALUE)」場所: "JSフレーム::"
マイコード:
onPageLoad: function(aEvent) {
Components.utils.import("chrome://my_ext/content/writeFile.jsm", my_ext);
//alert(foo()); - foo() is an function in the above code module I import
var doc = aEvent.originalTarget; // doc is document that triggered "onload" event
var event = doc.createEvent("Events");
event.initEvent("my-custom-event", true, true);
var fblike = doc.getElementById("LikePluginPagelet");
var button = doc.createElement("input");
button.setAttribute("type", "button");
button.setAttribute("value", "My Button");
button.setAttribute('onclick', 'dispatchEvent(event)');
fblike.appendChild(button, fblike);
var docx = event.originalTarget;
if(docx && docx.addEventListener)
docx.addEventListener("my-custom-event", function() {alert(foo()); }, false);
},
マイwriteFile.jsm:
var EXPORTED_SYMBOLS = ["foo"];
function foo() {
return "foo test";
}
どれでもどのように私はこれを修正することができますか?また、私はブラウザエクステンションを開発するために全く新しいことに言及する必要があります。
私はこれを実装しようとすると、 "uncaught exception:[Exception ..."コンポーネントが利用できません "nsresult:" 0x80040111(NS_ERROR_NOT_AVAILABLE) "場所:" JSフレーム:: chrome:/ /mezz/content/overlay.js :: :: line 43 "data:no" " 43行目はあなたが提案したコードを指します(" button.onclick = function()... ")。このエラーを検出すると、わからないFirefoxの非互換性を示唆するページが表示されました。 –
Zaheer
@ user773953:あのボタンをコンテンツページに挿入しています。はい、 'onclick'は利用できませんので、代わりに' addEventListener'を使うべきです(とにかく良いアイデアです)。私はこれを反映するために私の答えを編集しました。 –
私は何かが足りないと思う。私は今、エラーは表示されませんが、ボタンは機能しません。クリックすると何も起こりません。明確にするために、私の元のコードの最後の3行はまだまあまあですか? "var docx = event.original ..."から始まります。 – Zaheer