是否有可能劫持javascript确认功能?

时间:2014-12-29 10:56:08

标签: javascript confirm monkeypatching

我正在研究项目的前端部分。

指定的UI包含一组具有相同外观的对话框。

从功能上讲,两个主要的对话框就像 MessageBox ConfirmBox 一样,与window.alertwindow.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的单线程 / 事件循环 / 回调属性,我无法解决这个问题。


那么,是否有可能劫持确认功能呢?我对一个意见感到好奇,请帮助。

0 个答案:

没有答案