jsファイルを含むブラウザのoverlay.xulを使用するアドオンをビルドします。私がウェブページ上のHTMLを修正するために見つけた最も簡単な方法は、私が信じているmdnで見つけたこのコードです。その場でhtmlを挿入する
const STATE_START = Components.interfaces.nsIWebProgressListener.STATE_START;
const STATE_STOP = Components.interfaces.nsIWebProgressListener.STATE_STOP;
var myListener = {
QueryInterface: function(aIID) {
if (aIID.equals(Components.interfaces.nsIWebProgressListener) ||
aIID.equals(Components.interfaces.nsISupportsWeakReference) ||
aIID.equals(Components.interfaces.nsISupports))
return this;
throw Components.results.NS_NOINTERFACE;
},
onStateChange: function(aWebProgress, aRequest, aFlag, aStatus) { },
onLocationChange: function(aProgress, aRequest, aURI) {
PageLoad.initialzed = false;
PageLoad.init();
},
onProgressChange: function(aWebProgress, aRequest, curSelf, maxSelf, curTot, maxTot) { },
onStatusChange: function(aWebProgress, aRequest, aStatus, aMessage) { },
onSecurityChange: function(aWebProgress, aRequest, aState) { }
};
gBrowser.addProgressListener(myListener);
var PageLoad = {
initialzed : false,
browser : null,
domain : null,
appcontent : null,
init : function() {
PageLoad.appcontent = document.getElementById("appcontent");
if (PageLoad.appcontent) {
PageLoad.appcontent.addEventListener("DOMContentLoaded", PageLoad.load, true);
}
},
load : function() {
//I do this so it only calls the function once
if (PageLoad.initialzed == false) {
PageLoad.initialzed = true;
PageLoad.browser = gBrowser.contentDocument;
PageLoad.domain = (PageLoad.browser.location.host.match(/([^.]+)\.\w{2,3}(?:\.\w{2})?$/) || [])[1];
myFunctiontoInsertHTML();
}
}
};
それから私はPageLoad.browser.createElement('div')
を使用することができるというように、私の機能。これは良い、これまでの作品では、私は複数のタブを開いた状態で、私のPageLoad.domain
変数が最後にロードされたタブのドメインが含まれていることを問題に遭遇したりしていますWebページ(2つ以上の異なるページ/タブにHTMLを挿入する際にエラーが発生する)だから、私が変更したいのは、ユーザーが別のタブをクリックするか、関数を呼びたいページをリロードするたびに、私は行き詰まってしまいます。
チェックアウト[上のページのロード](https://developer.mozilla.org/en/Code_snippets/On_page_load)と[URLバーのリスナー](https://developer.mozilla.org/en/Code_snippets/Progress_Listeners#例:_Notification_when_the_value_in_Address_Bar_changes) –
私は自分自身のバリエーションを 'ページの読み込み'リンクに使っていましたが、このURLバーのリスナーはまさに私が必要とするものです。 – thefoyer