Возможен ли относительный URL/ путь в openDialog()?
Можно ли использовать относительный путь для URL?
changelog.htm
находится в том же каталоге, что и options.xul
Раздел options.xul
<setting title="&options.changelog.title;" type="control">
<button label="&options.changelog.label;"
oncommand="openDialog('chrome://myAddon/content/changelog.htm', '',
'dialog=no, modal=no, resizable=yes, width=500, height=600');"/>
</setting>
Есть ли альтернативы?
Обновить:
Если я попробую следующее, я получу ошибку "NS_ERROR_MALFORMED_URI:"
в консоли
<setting title="&options.changelog.title;" type="control">
<button label="&options.changelog.label;"
oncommand="openDialog('changelog.htm', '',
'dialog=no, modal=no, resizable=yes, width=500, height=600');"/>
</setting>
Update2:
Я должен был упомянуть, что мое тестирование было на <em:optionsType>2</em:optionsType>
и, как объяснено в следующем ответе, это не похоже на работу.
1 ответ
Да, относительные URL работают просто отлично.
У меня нет ссылок, но я просто попробовал это в диалоге настроек для расширения, над которым я работаю. Следующее открыло диалоговое окно просто отлично, когда кнопка была нажата. Он использовал XUL в файле test.xul
который находится в том же каталоге, что и мой options.xul
файл (определяется как диалог параметров в instal.rdf
):
<button label="test" oncommand="openDialog('test.xul', '',
'dialog=no, modal=no, resizable=yes, width=500, height=600');"/>
Последовательность работала, когда файл test.xul находился в относительной папке test/test.xul
, но не существует в каталоге, содержащем мой options.xul
:
<button label="test" oncommand="openDialog('test/test.xul', '',
'dialog=no, modal=no, resizable=yes, width=500, height=600');"/>
Перемещено из комментариев:
Однако для XUL, который фактически не указывает окно с использованием полного URL, может потребоваться. Если окно действительно не было открыто вашим XUL, вы не обязательно знаете, каким будет текущий рабочий каталог. В таких случаях использование относительного пути URL может привести к ошибке NS_ERROR_MALFORMED_URI:
и операция не удалась. Это определенно верно для диалоговых окон параметров, которые отображаются в диспетчере надстроек (т.е. они не открывают свое собственное окно). В вашем install.rdf
подать опцию <em:optionsType>2</em:optionsType>
задает параметры вашего дополнения для отображения в диспетчере дополнений. По умолчанию, <em:optionsType>1</em:optionsType>
, приводит к открытию нового диалогового окна.
Относительные URL работают из отдельных окон. Например, рассмотрим случай, когда диалоговое окно вашего дополнения находится в Диспетчере дополнений, открывая другое диалоговое окно. В этом случае относительные URL-адреса работают нормально из XUL открытого диалогового окна.