1

XUL オーバーレイを使用して Firefox アドオンを開発しており、URL を入力した後に現在のページが読み込まれたときに特定の js を呼び出したいと考えています。どの XUL 要素が影響を受け、ページ、タブ、ウィンドウ、または ??? などの JS を呼び出すために使用する必要があるかを知りたいです。また、要素に最適なイベントはどれですか? それとも私の論理が間違っていますか?また、js の機能はタブのタイトルや URL を記録することであるため、いつ js を呼び出し、対応するイベントを使用するかを知る必要があります。ありがとう.. :)

4

1 に答える 1

0

注目すべきXUL要素はタブブラウザです。ブラウザウィンドウ(つまり、ブラウザウィンドウに適用されるオーバーレイでも)では、グローバルgBrowser変数を介してアクセスできます。ページの読み込みがいつ終了するかを知りたい場合は、DOMContentLoadedイベントを聞くことができます。このようなもの(テストされていないコード):

// Declare an own namespace for extension's functions to avoid
// name conflicts with other extensions.
var MyExtension = {};

MyExtension.init = function()
{
  gBrowser.addEventListener("DOMContentLoaded", MyExtension.onPageLoad, false);
};

MyExtension.onPageLoad = function(event)
{
  // Get the document that loaded
  var doc = event.originalTarget;

  // Ignore frames that load
  if (doc.defaultView != doc.defaultView.parent)
    return;

  // Ignore if this isn't the active tab
  var browser = gBrowser.getBrowserForDocument(doc);
  if (browser != gBrowser.selectedBrowser)
    return;

  alert("Page loaded in current tab: " + doc.defaultView.location.href);
};

// Wait for the browser window to finish loading before adding event listeners
window.addEventListener("load", MyExtension.init, false);

以前に通知を受け取りたい場合は、URLバーに表示されるアドレスが変更されたときに、代わりに進行状況リスナーを使用できます。プログレスリスナーのメソッドを実装しonLocationChange、他のメソッドは空のままにします。このメソッドは、ユーザーが別のタブに切り替えたときにも呼び出されることに注意してください(これにより、ロケーションバーも変更されます)。aURIまた、渡されるパラメータonLocationChangensIURIインスタンスです。URLを文字列として使用する場合は、を参照してくださいaURI.spec

于 2012-04-19T19:15:50.147 に答える