我試圖替換在JS上使用confirm
警報時彈出的基本對話框。 (不jQuery)
基本上我試圖啓動一個函數,打開彈出窗口,作爲參數傳遞我想要運行的命令。然後該命令將作爲onClick
函數添加到相應按鈕。JS - 定製「確認」對話框
這裏有一個準系統例如,在命令可以像window.open('location')
或function(par1,par2); function2(par1);
或者乾脆stuff.innerHTML = 'foo'
function confirm(command) {
openPopup();
popup_button_close.onclick = function(){ closePopup(); };
popup_button.onclick = function(){ command; closePopup(); };
}
不幸的是,上面的例子不工作,我猜是因爲該字符串不被解釋爲實際的代碼,彈出窗口關閉而不執行命令。
對於此,最佳方法是什麼?將使用eval()
是一個有效的選項?
我在正確的道路上還是應該用回調來重新整理整個事物?
因爲我的理解是,使用回調函數,我需要將每個響應硬編碼到確認按鈕上,而不是像我在這裏試圖做的那樣通過它,這不是一種選擇。
我會建議讓'command'成爲一個回調函數,或者爲回調添加另一個參數。如果'eval'是解決方案,則可能是錯誤的。 –
是的,我也得出了這個結論,事實上'eval()'是我將採取的最後一種解決方案,以防其他選項失敗。無論如何,是不是將'command'變成一個回調函數,使它成爲一個固定的函數,而不是我試圖實現的靈活解決方案? – nxet
不應該,你可以在你調用它時傳遞一個匿名函數,'confirm(function(){/ * do stuff * /});'。 –