2016-10-01 173 views
0

我想替換JS警報並確認按鈕。這樣做的主要原因是一個複選框'阻止此窗口上的對話框',這是用戶最常自動選擇的! :)JS等待響應

因此,在點擊按鈕模式窗口出現,但功能不會等待用戶響應。

我不想使用Jquery UI插件,現在不要如何使用回調來解決這個問題。

請問您能幫忙嗎?

UPDATE

my_function(){ 
if(confirm('Are you sure?')) 
{ 
    ** do something ** 
} 
} 

所以,我想替換確認寫一個新的本地功能,將取代上述的功能:

confirm('text'){ 
** Do something ** 
} 

回答

0

JavaScript是一種單線程語言。只有幾次您可以'阻止'執行線程'alert','confirm'和'prompt'。其他場景需要異步回調。

promise對象使得處理異步邏輯變得更加容易,對於大多數瀏覽器來說,它本身就是available,並且通過shim支持所有瀏覽器。

也有很多庫提供標準瀏覽器模式更豐富的模式。

不管您想要的方法如何,您都需要了解JavaScript的回調和異步編程。

+0

謝謝,很好。 你能不能請看看這裏'http://stackoverflow.com/questions/39812807/php-html-issue-with-quotes'? –

0

你需要使用回調? 您可以嘗試在提交按鈕上使用事件偵聽器來調用該函數嗎?

function doSomething(){ var text = document.querySelectory("#answer").val; console.log("You answered "+text) }

<input id="answer" type="text"><button onclick="doSomething()">

+0

在https://plnkr.co/或一些類似的服務上創建一個簡化的測試用例,這樣我們可以測試它應該如何工作 – alanmbarr

+0

在您的示例中,我必須重寫所有使用確認的函數。我想要的是創建一個本地函數,它會自動替換JS確認 –

2
window.confirm

是同步的(等待用戶輸入)功能,因爲它是天然實現。您可以重新定義此功能,但無法同步實現確認對話框(無回調)。你應該考慮使用bootstrap modal或其他東西

+0

在繼續之前,模式不會等待用戶響應 –

+0

@TarlanMamedzade查看此答案:「沒有辦法同步實現確認對話框(沒有回調)。 「任何用戶編寫的替代阻止對話(如警報)或確認的用戶都不會同步並等待用戶輸入。 – traktor53

+0

我不在乎這個方法。我需要結果。你可以提出一個方法來描述它嗎? –