2009-06-24 2 views
2

Предположим, у нас есть призма Mozilla, такая как приложение XULRunner. Существует окно XUL с элементом < browser />, где браузер показывает веб-страницу в определенном домене (скажем, example.com).XULRunner: Предотвратите ссылки на произвольные домены

В настоящее время существует несколько ссылок на example.com. Если пользователь следует локальной ссылке (т. Е. Остается на example.com), ей должно быть позволено следовать. Если с другой стороны, связь идет в elpmaxe.moc, там должно быть (я не против) любой из этих двух возможностей:

  • «Реальный» открывается браузер (так же, как в Prism), или
  • ничего не происходит.

Любые идеи hwo для этого? Недостаточно использовать browser.document.onload или DOMready или такие события, потому что ссылка должна быть заблокирована безопасно даже во время загрузки страницы (т. Е. Когда ни одно из этих событий не запущено).

+0

Хм, возможный (но еще не тестировалось) решение может быть: browser.document.addEventListener («выгрузить», ...) , но до сих пор я не знаю, как определить, где происходит путешествие к. – Boldewyn

ответ

1

Кажется, вам нужна функциональность, аналогичная той, которая предоставляется BlockSite - за исключением того, что вы хотите, чтобы белый список домена приложения блокировал все остальное. Существует некоторая документация MDC по installing extensions within XUL Runner, которая может помочь.

В качестве альтернативы вы можете ознакомиться с исходным кодом и попробовать и выяснить, где он подключается - это позволит вам реализовать альтернативное поведение только для блокировки и избежать доставки расширения с вашим приложением. Я думаю, что 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 функция определена в коде только выше.

+0

Прохладный! Спасибо, что указали на меня. Это выглядит очень многообещающе. Как только я смогу проверить это (должно быть сделано на этой неделе), я приму ответ. – Boldewyn

+0

Да, наблюдатель - именно то, что я искал. Спасибо! – Boldewyn