Как открыть новое окно из браузера XUL?

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

Я нашел эту страницу на предмет, но предоставленное решение не показывает другого поведения.

Любой намек на это?

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


person The Student    schedule 26.11.2010    source источник


Ответы (3)


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

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

person Jonathan Morgan    schedule 11.12.2010
comment
В поисках дополнительной информации о типах браузеров я нашел эта страница, в которой рассказывается о предпочтениях, где я могу установить окно для обработки новых оконных проемов. Спасибо! - person The Student; 13.12.2010

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

window.open(url,windowname,flags);
person Jinesh Parekh    schedule 08.12.2010
comment
да (минимум символов в комментарии 15, тебе это не нравится?) - person The Student; 09.12.2010
comment
Кроме того, я попытался приписать свою функцию к window.open, чтобы я мог видеть, вызывается ли она, и нет. - person The Student; 09.12.2010

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

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

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

person Neil    schedule 16.01.2011