XML用户界面语言(XUL)开发入门(4)

运行XUL应用程序

可以选择 3 种方式来运行XUL应用程序:

对于简单的 UI 测试(chrome 测试),只需要打开 Firefox(或者任何基于 Mozilla 的浏览器,例如 Seamonkey 或者 Mac OSX 中的 Camino)中的 .xul 文件。这种方法对于测试非常简单的应用程序很有用。Firefox 不知道 chrome.manifest,因此它也不会找到您从主要的 chrome 引用的其他 chrome 文件。

下一个测试方法是使用 XULRunner。可以下载一个 XULRunner 安装工具,或者从源文件构建 XULRunner。如果从源文件构建 XULRunner,同时也会从源文件构建 Gecko SDK。一旦安装了 XULrunner,只需要将你的 application.ini 文件位置传递给它就行了。XULrunner 将会读取此文件,以及前面提到的其他两个配置文件,以初始化应用程序。

最后,您可以使用 Firefox 3.0 作为XUL运行时。它的功能和 XULRunner 很相似。如果通过 xulrunner <path_to_app>/application.ini 在命令行使用 XULRunner 调用了您的应用程序,那么要使用 Firefox 3.0 的话,就需要使用 firefox -app <path_to_app>/application.ini 命令。

博客编辑器

XUL 开发环境准备就绪后,就可以使用XUL构建一个示例应用程序了。我们将会构建一个简单的博客编辑器,这个编辑器可以创建并预览博客条目。也可以在本地保存博客条目并在以后重新载入。编辑器将会使用XUL作为用户界面,并使用 JavaScript 来完成每件事情。开始之前,先设置用户界面。

博客编辑器的用户界面

这是最令开发人员憎恶的应用程序部分。创建用户界面非常繁琐,但是XUL使这变得很容易。XUL 有许多控件,用于创建部件和指定布局。请看清单 4 中定义的一个简单 UI。

清单 4.XUL(/chrome/xulblogger/home.xul)中定义的 UI

<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<xul:window id="xulblogger" title="Create Blog Entry" orient="horizontal"
   align="start" xmlns="http://www.w3.org/1999/xhtml" height="1000"
   xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
   <xul:script src="blog.js"/>
   <xul:script src="json.js"/>
   <xul:vbox height="800">
     <xul:hbox>
        <xul:label value="Name of entry"/>
        <xul:textbox id="name" multiline="false" cols="70"/>
         <xul:label value="Signature"/>
         <canvas id="canvas" width="300" height="10"
style="border:1px solid gray;">
        </canvas>
     </xul:hbox>     
     <xul:textbox id="entry" multiline="true" rows="10" cols="80"/>
     <xul:hbox>
        <xul:label value="Tags"/>
        <xul:textbox id="tags" cols="80" multiline="false"/>
        <xul:button id="saveBtn" class="btnClass" label="Save" />
        <xul:button id="previewBtn" label="Preview" onclick="preview()"/>
     </xul:hbox>
     <xul:hbox>
         <xul:label value="Publish Date"/>
         <xul:datepicker type="grid" value="{new Date()}"/>       
     </xul:hbox>
     <div id="preview"></div>
   </xul:vbox>  
   <xul:script src="canvas.js"/>
   <xul:script>read();</xul:script>
</xul:window>

这是一个很简单的 UI。XUL vbox 和 hbox 组件使布局变得很简单。按从左到右的顺序,vbox 在垂直方向上依次排列各个对象,而 hbox 在水平方向排列各个对象。UI 有 2 个标签、3 个文本框(包括一个多行文本框)和 2 个按钮。这些都是非常直观的代码;即使您以前没有见过XUL,也能知道这些代码的用途。该 UI 还使用了几个更高级的控件。它使用了一个 datepicker 控件。这是在 Firefox 3 中引入的新控件。注意使用 JavaScript 表达式初始化 datepicker 的开始日期(值属性)的方式。此外,还需要注意使用户可以在XUL控件内部绘制的画布控件,该控件使他们能够对博客发布进行电子签名。仔细研究这个控件的工作原理。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 XUL 中实现搜索框的搜索记录,你可以使用 JavaScript 和 localStorage。以下是一个简单的示例: 首先,在 XUL 文件中添加一个搜索框和一个按钮: ```xml <textbox id="searchBox"/> <button id="searchButton" label="搜索" oncommand="saveSearch()"/> ``` 然后,在 JavaScript 中编写保存搜索记录的函数: ```javascript function saveSearch() { var searchBox = document.getElementById("searchBox"); var searchValue = searchBox.value; if (searchValue) { // 从本地存储中获取之前的搜索记录 var searchHistory = JSON.parse(localStorage.getItem("searchHistory") || "[]"); // 将当前搜索值添加到记录中 searchHistory.push(searchValue); // 将更新后的记录保存到本地存储 localStorage.setItem("searchHistory", JSON.stringify(searchHistory)); } } ``` 接下来,你可以编写一个函数来显示搜索记录,以便用户在下次进行搜索时选择之前的搜索项: ```javascript function showSearchHistory() { var searchBox = document.getElementById("searchBox"); var searchHistory = JSON.parse(localStorage.getItem("searchHistory") || "[]"); // 清空之前的搜索记录 while (searchBox.firstChild) { searchBox.removeChild(searchBox.firstChild); } // 添加搜索记录作为选项 for (var i = 0; i < searchHistory.length; i++) { var option = document.createElement("menuitem"); option.setAttribute("label", searchHistory[i]); option.addEventListener("command", function(event) { searchBox.value = event.target.getAttribute("label"); }); searchBox.appendChild(option); } } // 在页面加载时显示搜索记录 window.addEventListener("load", showSearchHistory); ``` 现在,当用户输入搜索词并点击搜索按钮时,搜索词将被保存到本地存储中。每次页面加载时,之前的搜索记录将被显示在搜索框的下拉菜单中,用户可以选择之前的搜索项进行搜索。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值