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

Javascript 在openDialog()中是否可以使用相对URL/路径?,javascript,firefox,firefox-addon,firefox-addon-restartless,Javascript,Firefox,Firefox Addon,Firefox Addon Restartless,是否可以为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',

是否可以为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>
更新2:

我应该提到我的测试是在
2
上进行的,正如下面的回答中所解释的,它似乎不起作用。

是的,相对URL工作得很好

我没有引用,但只是在我正在处理的扩展的“选项”对话框中进行了尝试。单击按钮时,下面的对话框窗口打开得很好。它使用了文件
test.XUL
中的XUL,该文件与我的
options.XUL
文件(定义为
instal.rdf
中的选项对话框)位于同一目录中:

从评论中删除:

但是,对于XUL,可能需要使用完整的URL来实际指定窗口。如果窗口不是由XUL实际打开的,那么您不一定知道当前工作目录是什么。在这种情况下,使用相对URL路径可能会导致错误
NS\u error\u格式错误\u URI:
,操作失败。对于在中显示的选项对话框(即,它们不打开自己的窗口),这一点绝对正确。在文件中,该选项设置要在附加模块管理器中显示的附加模块选项。默认情况下,
1
,将打开一个新的对话框窗口


相对URL在单独的窗口中工作。例如,考虑添加插件对话框的情况,该对话框位于Add on Manager中,打开另一个对话框窗口。在这种情况下,相对URL在现在打开的对话框窗口的XUL中可以正常工作。

我很确定您需要将其定义为绝对URL。谢谢。。。我在控制台中收到一个错误“NS\u error\u morformed\u URI:”我只是再试一次。我分别尝试了对我的答案中的每一个进行剪切和粘贴,在浏览器控制台中没有抱怨,效果很好。我还用一个基本的
.htm
文件进行了尝试,效果也不错。为了进一步找出配置中的问题所在,我们需要有关配置的更多信息(操作系统、Firefox版本、可能是您的
options.xul
文件、
chrome.manifest
install.rdf
)。你的options.xul在其他情况下有效吗?当您使用完整的URL时,它是否有效?什么类型的附加组件?它是在测试时提取的,还是在.xpi中提取的?我喜欢你,伙计,你对答案给出自己的看法,而不是只考虑外面的东西@谢谢你。。。由于我在所有插件中都使用相同的结构,所以只需选择其中任何一个作为示例(图1是一个简单的示例)。。。Win7(尽管不相关),FF 32.0.2我确认它在这里不适用于
2
,但适用于。问题似乎不是XUL的泛型问题,而是XUL的泛型问题。我的第一个猜测是,当前工作目录没有设置为您认为应该设置的目录。
  <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>
<button label="test" oncommand="openDialog('test.xul', '',
    'dialog=no, modal=no, resizable=yes, width=500, height=600');"/>
<button label="test" oncommand="openDialog('test/test.xul', '',
    'dialog=no, modal=no, resizable=yes, width=500, height=600');"/>