openDialog()中是否可以使用相对URL/路径



是否可以为URL使用相对路径?

changelog.htmoptions.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>

更新2:
我应该提到我的测试是在<em:optionsType>2</em:optionsType>上进行的,正如下面的回答所解释的,它似乎不起作用。

是的,相对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,但不存在于包含我的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中工作得很好。

相关内容

  • 没有找到相关文章

最新更新