まず、XUL を学びたい場合は、XUL Explorerを入手することを強くお勧めします。これは、スニペットを作成し、設計中のものをプレビューするために使用できるインタラクティブなツールです。
XUL は HTML によく似ていますが、要素とアプローチのラインナップが同じではないため、これまで XUL で作業したことがない場合に便利です。それは、次のようなものを構築するために使用できるデスクトップアプリを構築するために使用されるという点で、HTML が行う場所よりも少し上にあります。
https://developer.mozilla.org/en-US/docs/tag/tools
これらのプログラムの大部分は、ソースをダウンロードして、ドキュメントのリストと同じように調べることができます。また、Firefox Web Developer アドオンなど、いくつかの拡張機能にも気付くでしょう。これがソースで、ここにいくつかの XUL ファイルがあります。これにはたまたまdialogs
ディレクトリとmessage.xul
:
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/"?>
<?xml-stylesheet href="chrome://web-developer/content/dialogs/style-sheets/message.css"?>
<!DOCTYPE dialog SYSTEM "chrome://web-developer/locale/dialogs/message.dtd">
<dialog buttons="accept" id="web-developer-message-dialog" onload="WebDeveloper.Message.initialize()" title="&webdeveloper.message.title;" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script src="chrome://web-developer/content/common/common.js"/>
<script src="chrome://web-developer/content/dialogs/javascript/message.js"/>
<vbox id="web-developer-message-details">
<description id="web-developer-message"/>
<description id="web-developer-more-information" value="&webdeveloper.more.information;" onclick="WebDeveloper.Message.moreInformation()" class="url"/>
</vbox>
</dialog>
したがって、Dialog
これに を使用して、さまざまなタイプのプロンプトを作成できます。たとえば、少し前にチュートリアルで次のことを行いました。
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<dialog id="myDialog" title="My Dialog"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
onload="window.sizeToContent();"
buttons="accept,cancel"
buttonlabelaccept="Set Favorite"
buttonaccesskeyaccept="S"
ondialogaccept="return doSave();"
buttonlabelcancel="Cancel"
buttonaccesskeycancel="n"
ondialogcancel="return doCancel();">
<script>
function doSave(){
//doSomething()
return true;
}
function doCancel(){
return true;
}
</script>
<dialogheader title="My dialog" description="Example dialog"/>
<groupbox flex="1">
<caption label="Select favorite fruit"/>
<radiogroup>
<radio id="1" label="Oranges because they are fruity"/>
<radio id="2" selected="true" label="Strawberries because of color"/>
<radio id="3" label="Bananna because it pre packaged"/>
</radiogroup>
</groupbox>
</dialog>
次のようになります。
したがって、必要に応じて、本当に多くのオプションがありますnsIPromptService
...
var prompts = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
.getService(Components.interfaces.nsIPromptService);
var check = {value: false}; // default the checkbox to false
var flags = prompts.BUTTON_POS_0 * prompts.BUTTON_TITLE_SAVE +
prompts.BUTTON_POS_1 * prompts.BUTTON_TITLE_IS_STRING +
prompts.BUTTON_POS_2 * prompts.BUTTON_TITLE_CANCEL;
// This value of flags will create 3 buttons. The first will be "Save", the
// second will be the value of aButtonTitle1, and the third will be "Cancel"
var button = prompts.confirmEx(null, "Title of this Dialog", "What do you want to do?",
flags, "", "Button 1", "", null, check);
というものもありますPopupNotifications.jsm
。たくさんあるので、やりたいことがきっと見つかると思います。Zoteroのソースもあります。