1

是否可以使用 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:
我应该提到我的测试是 on <em:optionsType>2</em:optionsType>,并且如以下答案中所述,它似乎不起作用。

4

1 回答 1

3

是的,相对 URL 工作得很好。

我没有参考资料,但只是从我正在处理的扩展的选项对话框中尝试过。单击按钮时,以下打开一个对话框窗口就好了。test.xul它在与我的文件位于同一目录的文件中使用了 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,但在包含 my 的目录中不存在时,以下操作有效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 中工作得很好。

于 2014-09-22T04:37:30.907 回答