Как открыть новые окна из браузера XUL? - PullRequest
4 голосов
/ 26 ноября 2010

Мне интересно, можно ли вообще обработать запрос компонента Xul Browser на открытие нового окна?Я попытался изменить функцию window.open, но похоже, что она никогда не вызывается.Все ссылки, которые открываются в новом окне, не открываются в моем приложении.

Я нашел эту страницу по теме, но предоставленное решение не демонстрирует другого поведения.* Любой намек на это?

(кстати, я разрабатываю отдельное приложение, а не расширение Firefox)

Ответы [ 3 ]

1 голос
/ 11 декабря 2010

Я предполагаю, что вы находитесь в приложении XULRunner и пытаетесь загрузить URL-адрес Chrome из источника, отличного от Chrome, в браузер (например, HTTP или локальный файл). Хотя включение UniversalXPConnect и UniversalBrowserWrite может быть полезным, они также представляют угрозу безопасности (поскольку их может использовать любой произвольный веб-скрипт), поэтому они, как правило, отключаются в браузерах (например, запуск этой строки в Firebug даст вам исключение ):

>>> netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect UniversalBrowserWrite");
Error: A script from "http://stackoverflow.com" was denied UniversalXPConnect UniversalBrowserWrite privileges.

Как насчет того, чтобы попробовать использовать принципалов безопасности на базе кода и посмотреть, имеет ли это значение? (http://www.mozilla.org/projects/security/components/signed-scripts.html#codebase). Для меня в Firebug это действительно позволяет мне получить дополнительные разрешения после того, как я одобрил его большим, неприятно выглядящим диалогом), но все равно не позволяет мне открывать Chrome URL с помощью window.open. Следующим шагом, вероятно, является попытка изменить свой файл conf для использования contentaccessible, чтобы соответствующие части вашего контента были доступны (см. https://developer.mozilla.org/en/Chrome_Registration#contentaccessible).

Чтобы избежать неприятных сообщений при повышении разрешений, вы можете попытаться установить разрешения для нужных файлов автоматически, как описано в http://forums.mozillazine.org/viewtopic.php?f=38&t=1769555.

Кроме того, убедитесь, что вы проверили тип браузера (https://developer.mozilla.org/en/XUL/Attribute/browser.type). Если тип браузера не Chrome, то, возможно, стоит попробовать сделать его браузером и посмотреть, имеет ли это значение.

Если какое-либо из моих предположений неверно, вернитесь ко мне, и я попробую что-нибудь еще.

0 голосов
/ 16 января 2011

Есть два способа, о которых я знаю.

Первый - установить для предпочтения browser.chromeURL URL-адрес chrome, содержащий <browser type="content-primary">.Страница, которую пыталось открыть окно содержимого, будет загружена в указанный браузер.

Вторая - установить свойство window.browserDOMWindow для объекта, который вы определили для реализации интерфейса nsIBrowserDOMWindow.Это позволяет вам перенаправить открытый вызов во вкладку, если вы используете интерфейс с вкладками.Примечание: настройки просмотра с вкладками должны быть установлены так, чтобы окна могли перенаправляться на вкладки, в противном случае XULrunner вернется к browser.chromeURL.

0 голосов
/ 08 декабря 2010

обычный js не работает?

window.open(url,windowname,flags);
...