履歴とブックマークアイテム(メインブラウザウィンドウと個別のウィンドウ/サイドバーの両方)をすべてクリックすると、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
です(拡張機能に固有のプロパティに変更する必要があります)。