Возможен ли относительный 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 открытого диалогового окна.

Другие вопросы по тегам