2009-06-24 13 views
2

Angenommen, wir haben eine Mozilla Prism wie XULRunner App. Es gibt ein XUL-Fenster mit einem < Browser /> -Element, in dem der Browser eine Webseite auf einer bestimmten Domain anzeigt (zB example.com).XULRunner: Verhindern Links zu beliebigen Domänen

Jetzt gibt es mehrere Links auf example.com. Wenn ein Benutzer einem lokalen Link folgt (d. H. Auf example.com bleibt), sollte er dem folgen dürfen. Wenn auf der anderen Seite der Link zu elpmaxe.moc geht, sollte es (ich habe nichts dagegen) eine dieser zwei Möglichkeiten:

  • Der „echte“ Browser (wie in Prism) öffnet oder
  • passiert nichts.

Irgendwelche Ideen, dies zu tun? Es reicht nicht aus, browser.document.onload oder DOMready oder solche Ereignisse zu verwenden, da die Verbindung auch während des Ladens der Seite sicher blockiert werden muss (d. H. Wenn keines dieser Ereignisse bereits ausgelöst wurde).

+0

Hmm, eine mögliche (aber noch nicht getestet) Lösung könnte sein: browser.document.addEventListener („Entladen“, ...) aber ich weiß noch immer nicht, wie Sie bestimmen, wohin die Reise gehen wird zu. – Boldewyn

Antwort

1

Es scheint so, als ob Sie eine ähnliche Funktionalität wünschen wie die von BlockSite - mit der Ausnahme, dass Sie die Domain der App auf die weiße Liste setzen und alles andere blockieren wollen. Es gibt einige MDC-Dokumentation auf installing extensions within XUL Runner, die helfen können.

Alternativ können Sie sich auch den Quellcode ansehen und herausfinden, wo er sich einklinkt. So können Sie ein alternatives Verhalten implementieren, um nur eine Erweiterung mit Ihrer App zu blockieren und zu vermeiden. Ich denke, BlockSite.js ist die Schlüsseldatei, sieht aus wie der Handler hier hinzugefügt wird (Linie 171):

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

Die BlockSiteObserver Funktion im Code definiert ist gerade oben.

+0

Cool! Danke, dass du mich darauf hingewiesen hast. Es sieht sehr vielversprechend aus. Sobald ich es testen kann (sollte diese Woche gemacht werden), werde ich die Antwort akzeptieren. – Boldewyn

+0

Ja, der Beobachter ist genau das, wonach ich gesucht habe. Vielen Dank! – Boldewyn