2011-07-24 13 views
3

私はwindow.confirm()window.alert()のような、またはDIV + JavaScriptをwindow.prompt()ブロックダイアログをシミュレートします。 コールバック関数を使用すると簡単です。しかし、私は確認ダイアログが表示されている間、プロセスをブロックしたい。私はOK]または[キャンセル]をクリックした後はそれが ')(window.confirm' のようなブロックされたダイアログをシミュレートすることは可能ですか?

var Alert = function(){ balabala }; 
trueを返す

false:言うことです

は、私のような関数を定義します。

EDIT:今のところ

私はConfirm()を呼び出した関数を定義し、今私は

Confirm(*callback*); 

ようにそれを呼び出す必要がありますし、実装に私が確認し、[OK]のようなダイアログを表示しますをクリックすると、コールバックが実行されます。私は、私は彼らがあなたに戻ってくる前に、IEブラウザを使用してタブを切り替えると、それらの上に他のことをやってからユーザーをブロックすることはできません

if(Confirm()) { 
    callback(); 
} else { 
    balabala; 
} 
+2

あなたがプロセス全体をブロックすることができれば、それはブラウザの作成者にバグとして報告するでしょう。あなたがjavascriptからブロックすることができる唯一のことは、その単一のタブ内のjavascriptの実行です。 – CodesInChaos

答えて

1

のようにそれを呼び出すことができるように、それを書き換えることが可能であるかどうかを疑問に思いますalert()のように呼び出します。しかし、が質問に答えるまであなたのページの何かを使用することをブロックします。あなたはあなたのページの残りの部分よりも大きいz-indexを持つ絶対配置されたdivで本文全体を塗りつぶして、ポップアップをそれよりも1つ上のほうにz-index与えることができます。

もちろん、ChromeデベロッパーツールやFirebugのようなものを使用してブロックdivを削除することはできますが、安全ではありません。

質問が間違っています。ページを視覚的にブロックすることは気にしませんが、ポップアップの戻り値をコールバックとの非同期ではなくスクリプトの残りの部分と同期させたいとします。私はそれについてどうやって行くのか分からない。

多分これはあなたに使用されるであろう:https://developer.mozilla.org/en/Code_snippets/Threads#Waiting_for_a_background_task_to_complete

+0

詳細については、Confirm()という関数を定義しましたが、今は "Confirm(* callback)"のように呼び出す必要があります。実装では、OKのようなダイアログを表示し、OKのコールバックを実行します。私はそれが "if(Confirm())callback(); else balabala"のように呼び出すことができるように書き直すことが可能かどうか、 – zidianqs

0

残念ながら、ちょうどJavaScriptを使用して同期コードの呼び出しをシミュレートする方法はありません。純粋なDOMベースのダイアログを作成できますが、終了時にコードを実行させるには、コールバックを受け入れるかPromiseを返す必要があります。残念ながら、これは最もクリーンなコードのためのものではありません。

関連する問題