diff options
Diffstat (limited to 'files/ja/code_snippets/dialogs_and_prompts/index.html')
-rw-r--r-- | files/ja/code_snippets/dialogs_and_prompts/index.html | 342 |
1 files changed, 0 insertions, 342 deletions
diff --git a/files/ja/code_snippets/dialogs_and_prompts/index.html b/files/ja/code_snippets/dialogs_and_prompts/index.html deleted file mode 100644 index 8e727d8453..0000000000 --- a/files/ja/code_snippets/dialogs_and_prompts/index.html +++ /dev/null @@ -1,342 +0,0 @@ ---- -title: Dialogs and Prompts -slug: Code_snippets/Dialogs_and_Prompts -tags: - - Add-ons - - Extensions - - XUL -translation_of: Archive/Add-ons/Code_snippets/Dialogs_and_Prompts ---- -<p> -</p><p>この記事では、ダイアログボックスを表示・実行するためのコードサンプルを示しています。入門的情報とより多くの議論やサンプルが必要な場合は、<a href="ja/Working_with_windows_in_chrome_code">chrome コードの中でウィンドウを利用する</a> を参照してください。 -</p><p>{{ 英語版章題("Describing dialog windows") }} -</p> -<h3 id=".E3.83.80.E3.82.A4.E3.82.A2.E3.83.AD.E3.82.B0.E3.82.A6.E3.82.A3.E3.83.B3.E3.83.89.E3.82.A6.E3.81.AB.E3.81.A4.E3.81.84.E3.81.A6" name=".E3.83.80.E3.82.A4.E3.82.A2.E3.83.AD.E3.82.B0.E3.82.A6.E3.82.A3.E3.83.B3.E3.83.89.E3.82.A6.E3.81.AB.E3.81.A4.E3.81.84.E3.81.A6"> ダイアログウィンドウについて </h3> -<p>{{ 英語版章題("Dialogs in Mozilla") }} -</p> -<h4 id=".E3.81.A7.E3.81.AE.E3.83.80.E3.82.A4.E3.82.A2.E3.83.AD.E3.82.B0" name=".E3.81.A7.E3.81.AE.E3.83.80.E3.82.A4.E3.82.A2.E3.83.AD.E3.82.B0"> でのダイアログ </h4> -<p>アプリケーションでダイアログを生成したい場合、XUL ファイルのルートエレメントとして、(通常の <a href="ja/XUL/window"><window></a> でなく) <a href="ja/XUL/dialog"><dialog></a> を利用します。これにより -</p> -<ul><li> いくつかのキーワードのイベント (ENTER/ESC など) を取り扱え、キーボード操作が向上します。 -</li><li> OK, Cancel ボタンを OS 既定と整合した形で追加します。(ただし、ボタンの種類とレイアウトは下記のように高度にカスタマイズ可能です) -</li></ul> -<p>{{ 英語版章題("Simple dialog code") }} -</p> -<h4 id=".E7.B0.A1.E5.8D.98.E3.81.AA.E3.83.80.E3.82.A4.E3.82.A2.E3.83.AD.E3.82.B0.E3.82.B3.E3.83.BC.E3.83.89" name=".E7.B0.A1.E5.8D.98.E3.81.AA.E3.83.80.E3.82.A4.E3.82.A2.E3.83.AD.E3.82.B0.E3.82.B3.E3.83.BC.E3.83.89">簡単なダイアログコード</h4> -<p>以下の XUL コードは 2 つのボタン、OK と Cancel (<b>dialog</b> の <b>buttons="accept,cancel"</b> 属性) を持つ簡単なダイアログを定義します。 -</p> -<pre><?xml version="1.0"?> -<?xml-stylesheet href="chrome://global/skin/global.css" type="text/css"?> - -<dialog xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" - id="..." title="..." - buttons="accept,cancel" - ondialogaccept="return onAccept();" - ondialogcancel="return onCancel();"> - -<script src="chrome://..."/> - -<!-- Content --> - -</dialog></pre> -<p><i>onAccept</i> と <i>onCancel</i> 関数をスクリプトに実装するだけです。それらの関数が <b>false</b> 以外の戻り値を返した場合ダイアログは閉じます。 -</p><p>{{ 英語版章題("Buttons in <dialog>") }}</dialog> -</p> -<h4 id=".3Cdialog.3E_.E3.81.AE.E3.83.9C.E3.82.BF.E3.83.B3" name=".3Cdialog.3E_.E3.81.AE.E3.83.9C.E3.82.BF.E3.83.B3"><dialog> のボタン</h4> -<p>{{ 英語版章題("Predefined") }} -</p> -<h5 id=".E5.AE.9A.E7.BE.A9.E3.81.95.E3.82.8C.E3.81.A6.E3.81.84.E3.82.8B.E3.82.82.E3.81.AE" name=".E5.AE.9A.E7.BE.A9.E3.81.95.E3.82.8C.E3.81.A6.E3.81.84.E3.82.8B.E3.82.82.E3.81.AE">定義されているもの</h5> -<p>ダイアログの <b><a href="ja/XUL/Property/buttons">buttons</a></b> 属性では次の 6 つのボタン型を利用できます。 -</p> -<ul><li> <b>accept</b> — OK ボタン -</li><li> <b>cancel</b> — Cancel ボタン -</li><li> <b>disclosure</b> — 詳細情報ボタン -</li><li> <b>help</b> — ヘルプボタン (Thunderbird 1.0 では動作しません。{{ Bug(256915) }}) -</li><li> <b>extra1</b>, <b>extra2</b> — 既定のラベルや内容が無いボタン二つです。<b>extra2</b> は既定ではダイアログの左側に配置されます。 -</li></ul> -<p>これらのボタンに対して、<a href="ja/XUL/Attribute/label">label</a>、<a href="ja/XUL/Attribute/accesskey">accesskey</a> と <a href="ja/XUL/Attribute/oncommand">oncommand</a> を <b>dialog</b> エレメントに buttonlabel<buttonname>, buttonaccesskey<buttonname> や ondialog<buttonname> 属性をいれることにより定義できます。たとえば、Apply ボタンをダイアログに加えたい場合、次のようにします。 -</p> -<pre><dialog xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" - id="..." - buttons="accept,cancel,extra1" - ondialogaccept="onAccept();" - ondialogextra1="onApply();" - buttonlabelextra1="Apply" - buttonaccesskeyextra1="A"> - -<!-- Content --> -</dialog> -</pre> -<p><tt>gDialog.getButton(dlgtype);</tt> により定義されているどのボタンのオブジェクトでも得られます。<b>gDialog</b> は <dialog> エレメントで、<b>dlgtype</b> は上の 6 つのボタンタイプのうちの一つです。 -</p><p>{{ 英語版章題("Explicit") }} -</p> -<h5 id=".E6.98.8E.E7.A4.BA" name=".E6.98.8E.E7.A4.BA">明示</h5> -<p><b>dialog</b> で定義されているボタンのレイアウトに満足できないなら、XUL ファイルに <b>button</b> エレメントを明示的に定義し、<b>dlgtype</b> をそれに追加することが可能です。<b>dlgtype</b> の有効な値は、上にリストされている 6 つのボタンタイプです。 -</p><p>dlgtype をもつボタンへ <b>oncommand</b> を導入するかわりに、<b>dialog</b> エレメントの <b>ondialog*</b> 属性を利用してください。これは、ボタンの oncommand はボタンが押されたときにのみ実行されるのに対し、ondialog* ハンドラはキーボード入力や他のイベントの時にも実行されることによります。 -</p><p><b>サンプル:</b> -</p> -<pre><?xml version="1.0"?> -<?xml-stylesheet href="chrome://global/skin/" type="text/css"?> - -<dialog xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" - ondialogaccept="alert('ok!');"> -<hbox> - <label value="Hey!"/> - - <spacer flex="1"/> - <vbox> - <button dlgtype="accept"/> - <button dlgtype="cancel"/> - </vbox> -</hbox> -</dialog></pre> -<p>{{ 英語版章題("Default button") }} -</p> -<h5 id=".E6.97.A2.E5.AE.9A.E3.81.AE.E3.83.9C.E3.82.BF.E3.83.B3" name=".E6.97.A2.E5.AE.9A.E3.81.AE.E3.83.9C.E3.82.BF.E3.83.B3">既定のボタン</h5> -<p>Firefox 1.5 以来、<code><a href="ja/XUL/Attribute/defaultButton">defaultButton</a></code> 属性とプロパティーが <code><a href="ja/XUL/dialog"><dialog></a></code> エレメントに追加されました ({{ Bug(284776) }})。この属性に利用可能な値は上記のボタン名で、デフォルト値は過去のバージョンとの互換性の観点から <code>"accept"</code> です。 -</p><p>{{ 英語版章題("Using <dialogheader>") }}</dialogheader> -</p> -<h4 id=".3Cdialogheader.3E_.E3.82.92.E5.88.A9.E7.94.A8.E3.81.99.E3.82.8B" name=".3Cdialogheader.3E_.E3.82.92.E5.88.A9.E7.94.A8.E3.81.99.E3.82.8B"><dialogheader> を利用する</h4> -<p><b><a href="ja/XUL/dialogheader">dialogheader</a></b> エレメントをウィンドウにハンドラを追加するのに利用できます。どのように動作するかについて見たい場合は、Firefox もしくは Thunderbird (<i>v1.0 もしくはそれ以前のみ</i>) のオプション (もしくは設定) ダイアログを見てください。セクションボタンの右側のヘッダは <dialogheader> です。 -</p> -<pre><dialogheader title="General" description="whatever"/></pre> -<p>注 : このエレメントは <dialog> の中でのみ利用すべきで、他のところでは正常に表示されない可能性があります。(<window> の中でも同様に動作しているようには見えますが。) -</p><p>{{ 英語版章題("Links") }} -</p> -<h4 id=".E3.83.AA.E3.83.B3.E3.82.AF" name=".E3.83.AA.E3.83.B3.E3.82.AF">リンク</h4> -<ul><li>XulPlanet.com -<ul><li><a class="external" href="http://xulplanet.com/references/elemref/ref_dialog.html"><b>dialog</b> エレメント</a> -</li><li><a class="external" href="http://xulplanet.com/references/elemref/ref_dialogheader.html"><b>dialogheader</b> エレメント</a> -</li><li><a class="external" href="http://xulplanet.com/tutorials/xultu/dialogs.html">dialogs 作成</a> の章 (the XUL Tutorial) -</li></ul> -</li><li><a class="external" href="http://lxr.mozilla.org/seamonkey/source/toolkit/content/widgets/dialog.xml">dialog.xml</a> — <dialog> と <dialogheader> エレメントについての XBL バインディング -</li><li><a class="external" href="http://groups-beta.google.com/group/netscape.public.dev.xul/msg/02075a1736406b40">ダイアログにパラメータを渡し、戻り値を受け取る方法</a> -</li></ul> -<p>{{ 英語版章題("Passing arguments and displaying a dialog") }} -</p> -<h3 id=".E5.BC.95.E6.95.B0.E3.82.92.E6.B8.A1.E3.81.97.E3.81.A6.E3.83.80.E3.82.A4.E3.82.A2.E3.83.AD.E3.82.B0.E3.82.92.E8.A1.A8.E7.A4.BA.E3.81.99.E3.82.8B" name=".E5.BC.95.E6.95.B0.E3.82.92.E6.B8.A1.E3.81.97.E3.81.A6.E3.83.80.E3.82.A4.E3.82.A2.E3.83.AD.E3.82.B0.E3.82.92.E8.A1.A8.E7.A4.BA.E3.81.99.E3.82.8B"> 引数を渡してダイアログを表示する </h3> -<p>以下のコードはダイアログに独自の引数を渡して、ダイアログの中で利用し、ユーザが変更した値を呼び出し側に戻す方法を紹介します。mydialog.xul というダイアログを開いて、引数を渡すコードは次です。 -</p> -<pre>var params = {inn:{name:"foo", description:"bar", enabled:true}, out:null}; - window.openDialog("chrome://myext/chrome/mydialog.xul", "", - "chrome, dialog, modal, resizable=yes", params).focus(); - if (params.out) { - // User clicked ok. Process changed arguments; e.g. write them to disk or whatever - } - else { - // User clicked cancel. Typically, nothing is done here. - } -</pre> -<p>mydialog.xul: -</p> -<pre><dialog - xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" - id="myDialogId" - title="My Dialog" - ondialogaccept="return onOK();" - onload="onLoad();" - persist="screenX screenY width height" - windowtype="myDialogWindowType"> - - <script type="application/x-javascript" src="chrome://myext/content/mydialog.js"/> - <grid> - <columns><column/><column/></columns> - <rows> - <row align="center"><label value="Name:"/><textbox id="name"/></row> - <row align="center"><label value="Description:"/><textbox id="description"/></row> - <row align="center"><spacer/><checkbox id="enabled" label="Check to Enable"/></row> - </rows> - </grid> -</dialog> -</pre> -<p>mydialog.js: -</p> -<pre>// ダイアログが表示されるときに一度呼ばれる -function onLoad() { - // 呼び出し側によって渡される引数 - document.getElementById("name").value = window.arguments[0].inn.name; - document.getElementById("description").value = window.arguments[0].inn.description; - document.getElementById("enabled").checked = window.arguments[0].inn.enabled; -} - -// ユーザが OK をクリックした時だけに一度実行される -function onOK() { - // 変更した引数を返す - // ユーザが cancel をクリックした時は、window.arguments[0].out は null のまま - // この関数が呼ばれないので - window.arguments[0].out = {name:document.getElementById("name").value, - description:document.getElementById("description").value, - enabled:document.getElementById("enabled").checked}; - return true; -} -</pre> -<p><a class="external" href="http://groups-beta.google.com/group/netscape.public.dev.xul/msg/02075a1736406b40">ダイアログにパラメータを渡し、戻り値を受け取る方法</a> も参照してください。 -</p><p>{{ 英語版章題("Displaying the standard \"Open File\"/\"Save File\"/\"Select Folder\" dialogs") }} -</p> -<h3 id=".E6.A8.99.E6.BA.96.E3.81.AE_.22.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E3.82.92.E9.96.8B.E3.81.8F.22_.2F_.22.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E3.82.92.E4.BF.9D.E5.AD.98.E3.81.99.E3.82.8B.22_.2F_.22.E3.83.95.E3.82.A9.E3.83.AB.E3.83.80.E9.81.B8.E6.8A.9E.22_.E3.83.80.E3.82.A4.E3.82.A2.E3.83.AD.E3.82.B0.E3.82.92.E8.A1.A8.E7.A4.BA.E3.81.99.E3.82.8B" name=".E6.A8.99.E6.BA.96.E3.81.AE_.22.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E3.82.92.E9.96.8B.E3.81.8F.22_.2F_.22.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E3.82.92.E4.BF.9D.E5.AD.98.E3.81.99.E3.82.8B.22_.2F_.22.E3.83.95.E3.82.A9.E3.83.AB.E3.83.80.E9.81.B8.E6.8A.9E.22_.E3.83.80.E3.82.A4.E3.82.A2.E3.83.AD.E3.82.B0.E3.82.92.E8.A1.A8.E7.A4.BA.E3.81.99.E3.82.8B"> 標準の "ファイルを開く" / "ファイルを保存する" / "フォルダ選択" ダイアログを表示する </h3> -<p><a href="ja/NsIFilePicker">nsIFilePicker</a> 参照 -</p><p>{{ 英語版章題("Prompts and the prompt service") }} -</p> -<h3 id=".E3.83.97.E3.83.AD.E3.83.B3.E3.83.97.E3.83.88.E3.81.A8.E3.83.97.E3.83.AD.E3.83.B3.E3.83.97.E3.83.88.E3.81.AE.E3.82.B5.E3.83.BC.E3.83.93.E3.82.B9" name=".E3.83.97.E3.83.AD.E3.83.B3.E3.83.97.E3.83.88.E3.81.A8.E3.83.97.E3.83.AD.E3.83.B3.E3.83.97.E3.83.88.E3.81.AE.E3.82.B5.E3.83.BC.E3.83.93.E3.82.B9"> プロンプトとプロンプトのサービス </h3> -<p>ここまででダイアログについては理解したと思いますので、プロンプトについて見てみましょう。ダイアログと異なり、独自の XUL を要求しません。しかしながら、このため、カスタマイズ性には劣ります。ウェブ開発者にとっては、<code><a href="ja/DOM/window.alert">alert()</a></code> 関数でおなじみです。 -</p><p><img alt="Image:AlertHelloWorld.png"> -</p><p>これがもっとも単純なプロンプトのサンプルです。 -</p><p><code>nsIPromptService</code> は C++ や chrome JavaScript コード (ウェブページの JS ではありません) への <a href="ja/XPCOM">XPCOM</a> インターフェースで、いくつかのタイプのダイアログを表示するメソッドを提供します。 -</p><p>ファイル・フォルダー選択ダイアログについては、<a href="ja/NsIFilePicker">nsIFilePicker</a> を参照してください。 -</p><p><code>nsIPromptService</code> は理解するために重要な 9 つの関数といくつかの定数をもちます。この文書では、これらのうちいくつかについて解説し、すべてについてサンプルを提供します。 -</p><p>{{ 英語版章題("Getting nsIPromptService") }} -</p> -<h4 id="nsIPromptService_.E3.82.92.E5.8F.96.E5.BE.97.E3.81.99.E3.82.8B" name="nsIPromptService_.E3.82.92.E5.8F.96.E5.BE.97.E3.81.99.E3.82.8B">nsIPromptService を取得する</h4> -<p>はじめに、メッセージを表示するためのプロンプトサービスを取得する必要があります。これは -</p> -<pre class="eval">var prompts = Components.classes["@mozilla.org/embedcomp/prompt-service;1"] - .getService(Components.interfaces.nsIPromptService); -</pre> -<p>として行えます。 -</p><p>{{ 英語版章題("nsIPromptService methods") }} -</p> -<h4 id="nsIPromptService_.E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name="nsIPromptService_.E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">nsIPromptService メソッド</h4> -<p>{{ 英語版章題("alert()") }} -</p> -<h5 id="alert.28.29" name="alert.28.29">alert()</h5> -<p><code><a href="ja/NsIPromptService#alert">alert()</a></code> は最も単純な関数で、単に指定されたタイトルとメッセージでメッセージボックスを表示します。たとえば、 -</p> -<pre class="eval">var prompts = Components.classes["@mozilla.org/embedcomp/prompt-service;1"] - .getService(Components.interfaces.nsIPromptService); -prompts.alert(window, "Window title", "Hello world!"); -</pre> -<p>です。 -</p><p>他のたくさんの <code>nsIPromptService</code> のメソッドと同じく、最初のパラメータは <code><a class="external" href="http://xulplanet.com/references/xpcomref/ifaces/nsIWindowWatcher.html#method_openWindow">nsIWindowWatcher.openWindow</a></code> の <i>親ウィンドウ</i> です。もし、親ウィンドウが <code>nsIWindowWatcher.activeWindow</code> である場合、<code>null</code> を入れることもできます。 -</p><p>{{ 英語版章題("alertCheck()") }} -</p> -<h5 id="alertCheck.28.29" name="alertCheck.28.29">alertCheck()</h5> -<p><code><a href="ja/NsIPromptService#alertCheck">alertCheck()</a></code> は指定されたタイトル・文字列・チェックボックスでメッセージボックスを表示します。チェックボックスは、"このメッセージを次から表示しない" オプションか同様のものです。 -</p> -<pre class="eval">var prompts = Components.classes["@mozilla.org/embedcomp/prompt-service;1"] - .getService(Components.interfaces.nsIPromptService); -check = {value: false}; // default value -prompts.alertCheck(window, "Window title", "You have been warned", - "Don't ask again", check); -// do something with check.value; -</pre> -<p>チェックボックスの状態の取得方法に注意してください。この関数は <code>check</code> オブジェクトの <code>value</code> メンバーを変更します。そして、結果は <code>check.value</code> で受け取ることになります。これは、XPCOM コンポーネントでのいわゆる "out" パラメータの標準的な取得方法です。 -</p><p>{{ 英語版章題("confirm() and confirmCheck()") }} -</p> -<h5 id="confirm.28.29_.E3.81.A8_confirmCheck.28.29" name="confirm.28.29_.E3.81.A8_confirmCheck.28.29">confirm() と confirmCheck()</h5> -<p><code><a href="ja/NsIPromptService#confirm">confirm()</a></code> も単純です。指定されたタイトル・文字列、そして OK Cancel の二つのボタンを持つダイアログを表示します。 -</p> -<pre class="eval">var prompts = Components.classes["@mozilla.org/embedcomp/prompt-service;1"] - .getService(Components.interfaces.nsIPromptService); -var result = prompts.confirm(window, "Title", "Do you want to quit?"); -</pre> -<p>次のものはチェックボックスを持つ確認メッセージを表示するサンプルです。これは、<code>confirm()</code> と <code>alertCheck()</code> の混合で、追加コメント無しに簡単に理解できるでしょう。 -</p> -<pre class="eval">var prompts = Components.classes["@mozilla.org/embedcomp/prompt-service;1"] - .getService(Components.interfaces.nsIPromptService); -var check = {value: false}; -var result = prompts.confirmCheck(window, "Title", "Do you want to quit?", - "Do not ask me again", check); -// do something check.value / result -</pre> -<p>{{ 英語版章題("prompt()") }} -</p> -<h5 id="prompt.28.29" name="prompt.28.29">prompt()</h5> -<p><code><a href="ja/NsIPromptService#prompt">prompt()</a></code> は非常に重要で、入力を受け付けるさまざまな場面で有用です。XUL ダイアログを準備したり、テキストボックスを追加するかわりに、この関数を呼ぶだけですみます。最初のいくつかの引数は他の関数と同じですが、追加のオブジェクトを要求します。これらのオブジェクトは関数が呼ばれる前に既定の値を設定し、戻ってきたあとは新しい値に変更されています。 -</p> -<pre class="eval">var prompts = Components.classes["@mozilla.org/embedcomp/prompt-service;1"] - .getService(Components.interfaces.nsIPromptService); -var input = {value: "default value"}; -var check = {value: false}; -result = prompts.prompt(window, "Title", "What's your name?", input, "Do not ask again", check); -// input.value is the string user entered -// check.value indicates whether or not the checkbox is checked -// result - whether user clicked OK (true) or Cancel -</pre> -<p>{{ 英語版章題("promptPassword() and promptUsernameAndPassword()") }} -</p> -<h5 id="promptPassword.28.29_.E3.81.A8_promptUsernameAndPassword.28.29" name="promptPassword.28.29_.E3.81.A8_promptUsernameAndPassword.28.29">promptPassword() と promptUsernameAndPassword()</h5> -<p>次のものは、<a href="ja/NsIPromptService#prompt">prompt</a> の別のバージョンで、パスワード入力ボックスを持つ <a href="ja/NsIPromptService#promptPassword">promptPassword()</a> と、ユーザ名とパスワード入力ボックスを持つ<a href="ja/NsIPromptService#promptUsernameAndPassword">promptUsernameAndPassword()</a> です。 -</p> -<pre class="eval">//promptPassword -var prompts = Components.classes["@mozilla.org/embedcomp/prompt-service;1"] - .getService(Components.interfaces.nsIPromptService); -input = {value:"password"}; -check = {value:false}; -okorcancel = prompts.promptPassword(window, 'title', 'Text', input, 'Check?', check); -return input.value; -return check.value; -return okorcancel; - -//promptUsernameAndPassword -var prompts = Components.classes["@mozilla.org/embedcomp/prompt-service;1"] - .getService(Components.interfaces.nsIPromptService); -username = {value:"ihoss"}; -password = {value:"password"}; -check = {value:false}; -okorcancel = prompts.promptUsernameAndPassword(window, 'title', 'Text', username, password, 'Check?', check); -return username.value; -return password.value; -return check.value; -return okorcancel; -</pre> -<p>{{ 英語版章題("confirmEx()") }} -</p> -<h5 id="confirmEx.28.29" name="confirmEx.28.29">confirmEx()</h5> -<pre class="eval">var prompts = Components.classes["@mozilla.org/embedcomp/prompt-service;1"] - .getService(Components.interfaces.nsIPromptService); -var check = {value: false}; -var flags = 0; -var button = prompts.confirmEx(window, "Window title", "Message text", flags, - "Button 0", "Button 1", "Button 2", "Checkbox label", check); -// |check.value| indicates whether or not the checkbox is checked -// |button| indicates which button was clicked -</pre> -<p><code><a href="ja/NsIPromptService#confirmEx">confirmEx()</a></code> は独自のメッセージを利用可能になるようにカスタマイズ可能な形で設計されています。(必要なら翻訳された) 既定のもしくはコードで設定したラベルを持つ最大で 3 つのボタンと、必要ならチェックボックスも表示できます。もしチェックボックスが必要ないならば、<code>null</code> を 8 番目のパラメータ (チェックボックスのラベル) に与えてください。 -</p><p><code>flags</code> はダイアログにどのボタンを表示するかを決定するフラグです。それぞれのボタンは、タイトルフラグと配置フラグの積で定義されます。 -</p> -<table> -<tbody><tr><th>ボタン配置フラグ</th><th>ボタンタイトルフラグ</th></tr> -<tr><td><code>BUTTON_POS_0<br>BUTTON_POS_1<br>BUTTON_POS_2</code></td><td><code>BUTTON_TITLE_OK<br>BUTTON_TITLE_CANCEL<br>BUTTON_TITLE_YES<br>BUTTON_TITLE_NO<br>BUTTON_TITLE_SAVE<br>BUTTON_TITLE_DONT_SAVE<br>BUTTON_TITLE_REVERT<br>BUTTON_TITLE_IS_STRING</code></td></tr> -</tbody></table> -<p>ボタンには定義されているタイトルも利用可能です。もしくは、<code>BUTTON_TITLE_IS_STRING</code> が指定されれば、ボタンに指定された文字列パラメータが利用されます。 -</p><p><code>flags</code> はボタンの値の和に設定します。 -</p><p>どのボタンが表示されるかはプラットフォームによります。ボタンのデフォルトフラグが <code>flags</code> にない場合、ボタン 0 が既定で選択されます。 -</p> -<table> -<tbody><tr><th>ボタンのデフォルトフラグ</th></tr> -<tr><td><code>BUTTON_POS_0_DEFAULT<br>BUTTON_POS_1_DEFAULT<br>BUTTON_POS_2_DEFAULT</code></td></tr> -</tbody></table> -<p>たとえば、<code>flags</code> が次のように設定された場合、ダイアログは保存ボタン、キャンセルボタン、そしてタイトルが <code>confirmEx()</code> の 7 番目の引数で指定されるボタンを表示します。(上記のサンプルでは <code>"Button 2"</code> です。) -</p> -<pre class="eval">var flags = prompts.BUTTON_TITLE_SAVE * prompts.BUTTON_POS_0 + - prompts.BUTTON_TITLE_CANCEL * prompts.BUTTON_POS_1 + - prompts.BUTTON_TITLE_IS_STRING * prompts.BUTTON_POS_2; -</pre> -<p><code>flags</code> を <code>STD_OK_CANCEL_BUTTONS</code> もしくは <code>STD_YES_NO_BUTTONS</code> にすれば、OK/Cancel もしくは Yes/No ボタンのセットを表示します。 -</p><p>{{ 英語版章題("select()") }} -</p> -<h5 id="select.28.29" name="select.28.29">select()</h5> -<p><code><a href="ja/NsIPromptService#select">select()</a></code> はリストボックスと OK/Cancel ボタンを持つダイアログを表示します。リストボックスは、指定されたオプションを表示し、ユーザはそれの一つを選択できます。<code>selected.value</code> にユーザが選択した項目のインデックスが入りますので、<code>list{{ mediawiki.external('selected.value') }}</code> により値を取得できます。4 番目のパラメータは、表示したいエントリの個数で、<code>list</code> アレイの長さと等しいか少なくなるべきです。その値までの個数のアイテムがリストボックスに表示されます。 -</p> -<pre class="eval">var prompts = Components.classes["@mozilla.org/embedcomp/prompt-service;1"] - .getService(Components.interfaces.nsIPromptService); -var list = ["ihoss", "internet", "firefox", "xul", "stupid entry", "out of ideas"] -var selected = {}; -var ok = prompts.select(window, "Window title", "Prompt text", - list.length, list, selected); -// selected.value contains the index -// |ok| indicates whether OK or Cancel button was pressed -</pre> -<p>{{ 英語版章題("=Original version=") }} -</p> -<h5 id=".E3.82.AA.E3.83.AA.E3.82.B8.E3.83.8A.E3.83.AB.E3.83.90.E3.83.BC.E3.82.B8.E3.83.A7.E3.83.B3" name=".E3.82.AA.E3.83.AA.E3.82.B8.E3.83.8A.E3.83.AB.E3.83.90.E3.83.BC.E3.82.B8.E3.83.A7.E3.83.B3">オリジナルバージョン</h5> -<p>このチュートリアルのオリジナルは、<a class="external" href="http://ihoss.not-a-blog.com/prompt.php">ここ</a> にあります。 -</p><p>{{ 英語版章題("=Links=") }} -</p> -<h5 id=".E3.83.AA.E3.83.B3.E3.82.AF_2" name=".E3.83.AA.E3.83.B3.E3.82.AF_2">リンク</h5> -<p><a href="ja/NsIPromptService">nsIPromptService</a> -</p><p><br> -</p> -<div class="noinclude"> -</div> -{{ languages( { "en": "en/Code_snippets/Dialogs_and_Prompts", "fr": "fr/Extraits_de_code/Dialogues_et_invites", "pl": "pl/Fragmenty_kodu/Okienka_dialogowe" } ) }} |