2013-06-05 10 views
8

私は、標準のconfirm()メソッドをJavascriptでオーバーライドしようとしています(素敵なUIやものを作ってください)。私はそれが "できない"という100の記事を読んだが、私は公正なショットを与えるまで私はあきらめたくない。 :)Javascriptでどのようなメソッドがブロックされていますか?

実際の問題はもちろん、ユーザーがオプションを選択するまで、confirm()メソッドはすべてのJavaScriptの実行をブロックする必要があります。それで、Javascriptのブロック動作を持つメソッドは何ですか?私は5を思い付くことができました:

  • alert() - それは、独自の不要なUIが表示されるので、私に合っていません。
  • confirm() - alert()と同じ問題。
  • 無限ループ - 現代のブラウザでさえCPUを狂ったように食べ、「javascriptを停止しますか?」数秒後にプロンプ​​トが表示されます。同期モードで
  • XmlHttpRequest - 並べ替えのが、それはサーバーを必要とする...
  • showModalDialog() - 素敵な、しかし、私は特定の設計を必要とし、加えて、いくつかのブラウザの互換性の要件がある...

最高アプローチ私はこれまでのオプションを選択するまで、をプロンプト(独自のJavaScript実行スレッドを取得)で作成し、XmlHttpRequestでブロックしています。残念ながら、これは結果をサーバー間でやりとりすることを伴います。私はこの100%のクライアント側を作りたいと思います。また、ダイアログが開かれている間にサーバースレッドを結びつけ、ブラウザ固有のAjaxタイムアウトが適用されることがあります。

誰でも、(ab)望ましい効果を達成するために使用される可能性のある実行をブロックする他のJavascriptメソッドについて考えることはできますか?

+5

問題は実際にはブロックされていませんが、whileループや同様の方法で行うことができますが、ユーザーが応答するとjavascriptを必要とするダイアログをどのように作成するのですか?同時にjavascript 。より良いアプローチは、カスタムダイアログでコールバックを構築し、ブロックに頼るのではなくコールバック内の残りのコードを実行することです。 – adeneo

+0

リニアコードデザインからhtmlポップアップおよびコールバックデザインに切り替えるだけで、簡単に何回もやりました。 – yent

+0

@adeneo - そうです、サードパーティ製のライブラリを含めて、今変換されなければならないコードのヒープがまだない場合は、これが最良の方法です。ブロックされていてもブロックされていないものについては、いずれも「