これがシナリオです。その場で生成される JavaScript コードがいくつかあります。そこで、prompt()
ユーザー入力を読み取るための入力ボックスを開く を使用する代わりに、カスタム要素を作成しました。通常の入力ボックスを使用するのではなく、カスタム入力ボックスのスタイルを設定できるためです。
したがって、カスタム入力ボックスを表示する関数は、次のようなものです。show_input()
そして、オンザフライで生成されたこのコードは、最後に を使用して実行されeval()
ます。したがって、コードでは、その関数を呼び出した後show_input()
、プログラムはユーザーが値を入力してボタン (カスタムメイドの入力フォームのボタン) を押すまで待機することになっています。また、生成されたコードには、この関数への複数の呼び出しがあります。
これに対する解決策を見つける方法がわかりません。つまりprompt()
、コードの実行全体を停止するのと同じように動作させることです。
私が試したのは、カスタム入力ボックスで、ユーザーが値を入力してボタンを押したときに設定されるブール値フラグを使用することです。そのため、myshow_input()
が呼び出されると、カスタム入力ボックスが表示され、このブール値フラグが設定されている場合にのみ停止する無限ループに入ります。しかし、これにより Web ページがフリーズし、応答しなくなります。だから、それは素晴らしい解決策ではありません。
関数がどのようにprompt()
機能するかを模倣する方法はありますか。つまり、ユーザーがボタンを押すまでページ全体を一時停止しますか?
setTimeout()
私の場合、 function は良い選択ではありません。その理由は、生成されたコードが次のようになるためです。
statement1;
statement2;
show_input(); //call the function to show my custom inputbox
statement3;
show_input();
statement4;
statement5;
// etc...
そのため、 の後statement2
、関数呼び出しは、ユーザーに値を入力してボタンを押すように求めるカスタム入力ボックスを表示するためのものです。このボタンを押した後にのみ、に移動する必要がありますstatement3
。それまでは、ユーザーがカスタム入力ボックスのボタンを押すのを待つ必要があります。
jQuery を使用しており、ボタンにクリック イベントが追加されています。
実行時に生成された上記のコードは、eval()
どんなアイデアでも大歓迎です。ありがとうございました