XULRunner: предотвращение ссылок на произвольные домены - PullRequest
2 голосов
/ 24 июня 2009

предположим, у нас есть приложение Mozilla Prism, подобное XULRunner. Существует окно XUL с элементом , где браузер отображает веб-страницу в данном домене (например, example.com).

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

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

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

1 Ответ

1 голос
/ 08 июля 2009

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

...