0

私の Firefox 拡張機能内で、リンク、履歴エントリ、またはブックマークをクリックした後など、ページ読み込みのソースを検出したいと考えています。これまでのところ、リンクのクリックを検出し、戻る/進む履歴ボタンを使用することができました。

ただし、履歴ライブラリのウィンドウ内の項目のクリックはもちろん、履歴メニューの項目のクリックも検出できません ([すべての履歴を表示] をクリックするとポップアップします)。ブックマーク メニューとブックマーク ライブラリ ウィンドウでも同じ問題が発生します。

これを達成するための多かれ少なかれ簡単な方法はありますか? ブックマーク メニューについては、すべてのブックマークにクリック リスナーを追加することを考えることができます。

4

1 に答える 1

1

履歴とブックマークアイテム(メインブラウザウィンドウと個別のウィンドウ/サイドバーの両方)をすべてクリックすると、PlacesUIUtils.openNodeWithEvent()またはPlacesUIUtils.openNodeIn( )が呼び出されます(後者は、ユーザーがコンテキストからアイテムを開く場所を明示的に選択した場合に使用されますメニュー)。次のようなアプローチを使用して、これらの関数を拡張できます。

Components.utils.import("resource:///modules/PlacesUIUtils.jsm");
if (!("myExtensionHooked" in PlacesUIUtils.openNodeWithEvent))
{
  var origOpenNodeWithEvent = PlacesUIUtils.openNodeWithEvent;
  PlacesUIUtils.openNodeWithEvent = function(node)
  {
    // Remember node.uri here - user chose this URL
    ...

    // Call original function
    return origOpenNodeWithEvent.apply(this, arguments);
  };
  PlacesUIUtils.openNodeWithEvent.myExtensionHooked = true;
}

そして他の機能についても同様です。これは、ブラウジングセッションごとに1回だけ実行する必要があることに注意してくださいPlacesUIUtils。オブジェクトはすべてのブラウザウィンドウで共有されます。これがサンプルコードのプロパティの目的myExtensionHookedです(拡張機能に固有のプロパティに変更する必要があります)。

于 2012-05-29T12:25:04.773 に答える