2009-06-24 7 views
2

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

example.comにいくつかのリンクがあります。ユーザーがローカルリンクをたどった場合(つまり、example.comにとどまっている場合)、彼女はフォローできるようにすべきです。一方のリンクがelpmaxe.mocに行く場合は、(私は気にしない)、これら二つの可能性のいずれかがあるはずです:

「本当の」ブラウザが(ちょうどプリズムのように)開き
  • 、または
  • 何も起こりません。

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

+0

うーん、可能(まだ未テスト)ソリューションは、次のようになります。 browser.document.addEventListener が、それでも私にはわからないが、どのように決定する(「アンロード」、...)は、旅が起こっていますに。 – Boldewyn

答えて

1

BlockSiteで提供されている機能に似て、アプリのドメインをホワイトリストに登録し、他のすべてをブロックしたい場合を除き、機能は同じです。 installing extensions within XUL RunnerにあるMDCのドキュメントがありますが、これは参考になるかもしれません。

また、ソースコードを調べて、フックがどこにあるかを試してみることもできます。これにより、アプリケーションで拡張機能を出荷するのを避けるだけの代替動作を実装できます。

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

BlockSiteObserver機能がちょうど上記のコードで定義されています:私は(ライン171)ハンドラがここに追加されるように見える、BlockSite.jsがキーファイルだと思います。

+0

クール!私にこれを指摘してくれてありがとう。非常に有望ですね。私はそれをテストすることができたらすぐに(今週行うべきです)、私は答えを受け入れます。 – Boldewyn

+0

ねえ、オブザーバーは私が探し求めたものです。ありがとうございました! – Boldewyn

関連する問題