2

XULRunner アプリのような Mozilla Prism があるとします。<browser/> 要素を持つ XUL ウィンドウがあり、ブラウザは特定のドメイン (example.com など) の Web ページを表示します。

現在、example.com にいくつかのリンクがあります。ユーザーがローカル リンクをたどる (つまり、example.com にとどまる) 場合は、フォローを許可する必要があります。一方、リンクが elpmaxe.moc に移動する場合、次の 2 つの可能性のいずれかがあるはずです (気にしません)。

  • 「実際の」ブラウザが開きます (Prism と同じように)、または
  • 何も起こりません。

これを行うためのアイデアはありますか?browser.document.onload や DOMready などのイベントを使用するだけでは十分ではありません。これは、ページの読み込み中 (つまり、これらのイベントがまだ発生していないとき) であってもリンクを安全にブロックする必要があるためです。

4

1 に答える 1

1

アプリのドメインをホワイトリストに登録し、他のすべてをブロックすることを除いて、 BlockSiteが提供する機能と同様の機能が必要なようです。XUL Runner 内に拡張機能をインストールするための MDC ドキュメントがいくつかあります。

別の方法として、ソース コードを調べて、それがフックされている場所を特定することもできます。これにより、単にブロックする代わりの動作を実装して、拡張機能をアプリに同梱することを回避できます。BlockSite.jsがキー ファイルだと思います。ハンドラーがここに追加されるようです (171 行目):

var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
observerService.addObserver(BlockSiteObserver, "http-on-modify-request", false);

BlockSiteObserver関数は、すぐ上のコードで定義されています。

于 2009-07-08T12:40:23.007 に答える