【问题标题】:Is relative URL/path possible in openDialog()?openDialog() 中是否可以使用相对 URL/路径?
【发布时间】:2014-09-21 19:55:03
【问题描述】:

是否可以为 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:" in console

  <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:
我应该提到我的测试是在&lt;em:optionsType&gt;2&lt;/em:optionsType&gt; 上进行的,正如以下答案中所解释的,它似乎不起作用。

【问题讨论】:

  • 我很确定你需要绝对定义它。

标签: javascript firefox firefox-addon firefox-addon-restartless


【解决方案1】:

是的,相对 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');"/>

从 cmets 移出:

但是,对于实际上并未使用完整 URL 指定窗口的 XUL,可能需要。如果您的 XUL 没有实际打开该窗口,您不一定知道当前工作目录是什么。在这种情况下,使用相对 URL 路径可能会导致错误 NS_ERROR_MALFORMED_URI: 和操作失败。这对于在Add-on Manager 中显示的选项对话框绝对正确(即它们不打开自己的窗口)。在您的install.rdf 文件中,选项&lt;em:optionsType&gt;2&lt;/em:optionsType&gt; 将您的插件选项设置为在插件管理器中显示。默认值 &lt;em:optionsType&gt;1&lt;/em:optionsType&gt; 会打开一个新的对话窗口。

相对 URL 可以在单独的窗口中工作。例如,考虑您的插件对话框的情况,它位于插件管理器中,打开另一个对话框窗口。在这种情况下,相对 URL 在现在打开的对话框窗口的 XUL 中可以正常工作。

【讨论】:

  • 谢谢...我在控制台中收到错误“NS_ERROR_MALFORMED_URI:”
  • 我刚刚又试了一次。我在我的答案中分别尝试了每个答案的剪切和粘贴,并且在浏览器控制台中没有任何投诉,它工作得很好。我还尝试了一个基本的.htm 文件,它也运行良好。为了进一步尝试找出您的配置中的问题,我们将需要有关您的配置的更多信息(操作系统、Firefox 版本,可能是您的options.xul 文件、chrome.manifestinstall.rdf)。您的 options.xul 是否正常工作?当您使用完整的 URL 时,它是否有效?什么类型的插件?它是在测试时提取的,还是在 .xpi 中提取的?
  • 我喜欢你,你给出自己的答案,不要随随便便!
  • @Makyen 谢谢...由于我在所有插件中使用相同的结构,只需选择my addons 中的任何一个作为示例(图片简单)... Win7(虽然不相关), FF 32.0.2
  • 我确认它不适用于 &lt;em:optionsType&gt;2&lt;/em:optionsType&gt;,但适用于 &lt;em:optionsType&gt;1&lt;/em:optionsType&gt;。看来问题不是 XUL 的通用问题,而是用于 options displayed within the Add-on Manager 的 XUL。我的第一个猜测是当前工作目录未设置为您认为应该的。
猜你喜欢
  • 2012-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-05
  • 2016-05-26
  • 2018-05-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多