1

我们已经完成了一个用 HTML+JS 编写的 Web 应用程序。它适用于 Chrome 的 Web App 模式(只要禁用 SOP,以允许来自 file:// URI 的 JSON 请求),但我真的不想将自己限制为 Chrome 作为唯一选项(特别是因为 Windows 部署可以痛苦)。

如何使用 XULRunner 部署此应用程序?整个 UI 已经实现,所以 XUL 代码应该尽可能少(基本上是“这里是站点,渲染它,并允许 AJAX 请求到 $domain”)。是否有一些教程如何做到这一点?我发现的那些都专注于纯 XUL 应用程序……</p>

4

2 回答 2

3

XULRunner 旨在运行基于 XUL 的应用程序,因此关注它们的文档没有错。但是,如果您只需要该应用程序来显示 Web 应用程序,那么您的 XUL 应用程序可能非常简单。基本上,您唯一的 XUL 文件如下所示:

<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>

<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
    title="My Web App"
    id="webapp-window"
    width="800"
    height="600"
    persist="screenX screenY width height sizemode">
  <browser type="content-primary"
      src="index.html"
      flex="1"
      disablehistory="true"/>
</window>

这是一个会记住它的大小和位置的窗口以及一个完全填充它的浏览器元素。供参考:<xul:window>, <xul:browser>.

chrome.manifest文件将如下所示:

content webapp content/

这将content/子目录声明为对应于chrome://webapp/content/- 您将放置主 XUL 文件和实际 Web 应用程序的位置。由于chrome://使用了协议,Web 应用程序将以完全权限运行,这意味着它可以XMLHttpRequest在任何域上使用(以完全权限运行 Web 应用程序在安全方面并不好,但这是禁用相同权限的最简单方法-原产地政策)。

最后是defaults/preferences/prefs.js告诉 XULRunner 在启动时打开哪个窗口的文件:

pref("toolkit.defaultChromeURI", "chrome://webapp/content/main.xul");

这已经差不多了。查看有关application.ini.

于 2012-06-18T06:49:37.580 回答
3

我建议您查看Webapp XUL Wrapper。从自述文件:

Webapp XUL Wrapper 是一个构建脚本的集合,用于将 webapp 打包到 Mac、Windows 和 Linux 的可分发包中。

最终结果是您的 Web 应用程序的独立和离线版本。

包含在分发包中:

  • 带有主浏览器窗口和关于对话框的最小 XUL 应用程序
  • 捆绑的HTTP 服务器
  • XULRunner 17 (壁虎 17)
于 2012-11-29T15:16:26.223 回答