以下是該方案。我有一些可以即時生成的JavaScript代碼。因此,我沒有使用打開用於讀取userinput的輸入框的prompt()
,而是製作了一個自定義元素。因爲我可以設置我的自定義輸入框而不是使用正常的輸入框。JavaScript中提示()的替代方法
因此,爲了顯示自定義輸入框的功能是一樣的東西,show_input()
和動態生成的代碼,在使用eval()
年底執行。所以在代碼中,在調用show_input()
函數之後,程序應該等待直到用戶輸入值並按下按鈕(我自定義的輸入表單中的按鈕)。並且在生成的代碼中會有多次調用此函數。
我不知道如何找到解決方案。也就是說,使其行爲就像停止整個代碼的執行一樣。
我試過的是,在我們的自定義輸入框中,使用一個布爾標誌,當用戶輸入數值並按下按鈕時,該布爾標誌將被設置。所以,當我的show_input()
被調用時,它會顯示自定義輸入框,然後進入一個無限循環,只有當這個布爾標誌設置時纔會停止。但是這會凍結網頁,使其無法響應。所以,這不是一個好的解決方案。
有沒有什麼辦法模仿prompt()
函數的工作原理。我的意思是,暫停整個頁面,直到用戶按下按鈕?
setTimeout()
函數在我的情況下不是一個好的選擇。因爲原因是,產生我的代碼會是這個樣子:
statement1;
statement2;
show_input(); //call the function to show my custom inputbox
statement3;
show_input();
statement4;
statement5;
// etc...
所以,statement2
後,函數調用是用於顯示自定義輸入框,要求用戶輸入的值,並按下一個按鈕。只有按下此按鈕後,才能轉到statement3
。直到那時,它應該等待用戶按下我的自定義輸入框中的按鈕。
我正在使用jQuery,並且該按鈕有一個點擊事件添加到它。
在運行時生成上面的代碼中,使用eval()
任何想法,將高度讚賞執行。 謝謝
你所說的input()究竟是什麼?這不是原生JavaScript。 – 2013-03-07 13:07:23
使用事件。這意味着你將不得不讓你的代碼更加安全。例如,調用'show_input()'後,你不應該有更多的代碼「等待」。您的代碼應該完成,並且一旦用戶觸發事件(OK按鈕),您將執行另一個功能。 – TheBronx 2013-03-07 13:10:03
你最好的選擇是使用[showModalDialog()](https://developer.mozilla.org/en-US/docs/DOM/window.showModalDialog),否則這對於JavaScript來說是不可能的。 – Teemu 2013-03-07 13:15:32