iFrame в Firefox скрытое окно с историей contentWindow.history? - PullRequest
1 голос
/ 02 апреля 2010

Я пытаюсь запустить размещенный скрипт с правами на контент в моем расширении Firefox. Для этого я создаю контентный фрейм в скрытом окне, указывающем на HTML-файл, который извлекает скрипт. Этот сценарий требует наличия «истории», но у фреймов, созданных в скрытом окне, по какой-то причине нет истории.

Chromebug сообщает об этом для содержимого iframe contentWindow.history:

object does not support history (nsIDOMHistory)

И скрипт выдает эту ошибку, когда она недоступна:

Error: Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIDOMHistory.length]

Есть идеи?

Ответы [ 2 ]

1 голос
/ 14 апреля 2010

Оказывается, что URL-адрес скрытого окна был примерно пустым, но это явно было недостатком безопасности, поэтому теперь это ресурс: //gre/res/hiddenWindow.html (или resource: // gre-resources /hiddenWindow.html в trunk), поэтому он не обладает привилегиями chrome, которые необходимы элементу браузера XUL для подключения собственной истории сеансов или даже для доступа к собственному документу содержимого.

Даже используя элемент iframe XUL, вы должны быть осторожны, поскольку ни одно из его свойств не работает, опять же, потому что он работает без привилегий chrome. Таким образом, вы должны сделать что-то вроде iframeElement.boxObject.QueryInterface (Components.interfaces.nsIContainerBoxObject) .docShell.QueryInterface (Components.interfaces.nsIInterfaceRequestor) .getInterface (Components.interfaces.nsIDOMWindow) для получения 100 окон своего содержимого.

0 голосов
/ 13 апреля 2010

автоматически подключит историю сеанса по умолчанию, а

Не забудьте убедиться, что ваш элемент создан в пространстве имен XUL. Я полагаю, что скрытое окно - это пустой документ HTML, кроме Mac.

...