javascriptでconfirm()と同じように動作するものを書きたいのですが、ダイアログボックスをスキンできるように自分で書きたいです。基本的に、ユーザーが応答するまでJavaScriptスレッドを強制的に待機させてから、trueまたはfalseを返す方法を考えるのに苦労しています。
5 に答える
私があなたなら、人気のある JavaScript ライブラリの 1 つに注目します。ほとんどの場合、ある種のモーダル ダイアログが含まれています。
私が見つけた JQuery のカップルは、jqModalとSimpleModalです。
モーダル ダイアログを作成するときは、イベントをボタンに関連付ける必要があるため、次のようにします。
function askUserYesOrNo() {
var myDialog = $('<div class="mydialog"><p>Yes or No?</p><input type="button" id="yes" value="Yes"/><input type="button" id="no" value="No"/></div>');
$("#yes").click(handleYes);
$("#no").click(handleNo);
myDialog.modal(); //This would have to be replaced by whatever syntax the modal framework uses
}
function handleYes() {
//handle yes...
}
function handleNo() {
//handle no...
}
自分でフレームワークを構築しようとすると、さまざまなクロスブラウザーの問題が発生するため、フレームワークを使用する必要があります。
モーダル ダイアログを定義できる jQuery フレームワークのプラグインであるjqModalを使用して良い結果が得られましたが、これが唯一のオプションではありません。いくつかの代替手段として、 Google jquery modalまたはyui modalを試してください。
Mootools の場合はmoo.rd の Custom.ConfirmとWindoo.Confirmが参考になります。
必要最小限の YUI モーダル ライトボックス ( example ):
ウィンドウを使用できます。showModalDialog ( mozilla ) ですが、これは Internet Explorer によって導入された非標準の機能です。現在、Firefox 3 と Safari でもサポートされています (どのバージョンかはわかりませんが、少なくとも 3.1 以降で、iPhone ではサポートされていません)。