我正在研究项目的前端部分。
指定的UI包含一组具有相同外观的对话框。
从功能上讲,两个主要的对话框就像 MessageBox 和 ConfirmBox 一样,与window.alert
和window.confirm
相同。
所以,我试图劫持这两个函数,当我调用window.alert(msg)
时,它会显示我的自定义对话框:
<div id="dialog_alert">
<p class="dialog_content">Message</p>
<a class="btn-confirm">OK</a>
</div>
此行为与本机window.alert
类似。
当我试图劫持window.confirm
时,我发现它似乎不可能:
window.confirm = function(message) {
var $dialog = $('#dialog_confirm');
$dialog.find('.dialog_content').text(message);
$dialog.show();
$dialog.find('.btn-yes').click(function() {
return true;
});
$dialog.find('.btn-no').click(function() {
return false;
});
// My GOD, I must return true or false immediately here.
};
如上所述,当我尝试返回确认结果时,由于javascript的单线程 / 事件循环 / 回调属性,我无法解决这个问题。
那么,是否有可能劫持确认功能呢?我对一个意见感到好奇,请帮助。