2010-08-21 86 views

回答

1

这是不可能的。

将函数分成两部分,运行一部分,并将另一部分分配给按钮的单击事件处理程序。

+0

实际上我的要求是为window.confirm实现灯箱,因为window.confirm可以暂停函数并返回true或false我想实现相同的 – kumar 2010-08-21 12:35:28

+0

@kumar,它与@David Dorward所描述的几乎相同,除了不是指定点击处理程序,而是向对话框添加回调。 – strager 2010-08-21 12:42:32

+0

但我必须从当前的javascript函数返回true或false点击灯箱是或否按钮。 – kumar 2010-08-21 12:49:11

1

您可以使用弹出框。

alert("Pausing to get Coffee"); 
+0

感谢您的回复,但我需要实现自定义的window.cofirm我正在显示一个灯箱,同时该函数不会暂停执行,我想设置一个隐藏的变量在html中为true或false,点击yes或者灯箱上没有,并且在函数的恢复中,我将读取变量并执行必要的操作。 – kumar 2010-08-21 12:41:59

1

就像大卫说的那样,不可能停止Javascript中的函数执行(当然,现在还不行)。一个解决办法是这样的:

** EDITED **后你添加了一些精度你想要做

// pass the reference of the button id to the function 
function showConfirm(message, callback) { 
    // 1. check if the lightbox is not already created, if not create it 
    // 2. keep a reference to your key elements, for example, your buttons 
    var btnOk = document.getElementById('btnOk'); // ...for example 
    var btnCancel = document.getElementById('btnCancel'); // ...for example 

    // 3. have a 'cleanup' function so you can dismiss your lightbox, unregister 
    //  any events/callbacks, etc. 
    var cleanup = function() { 
     // 6. hide lightbox 
     // 7. remove events/callbacks, etc. 
     btnOk.click = null; // for example 
     btnCancel.click = null; // for example 

     // etc. 
    }; 


    // 4. update your lightbox with the message given in argument 

    // 5. register some events to your buttons... 
    btnOk.click = function() { 
     callback(true); // ok was pressed 
     cleanup(); 
    }; 
    btnCancel.click = function() { 
     callback(false); // cancel was pressed 
     cleanup(); 
    } 

} 

所有您需要记住的是,在Javascript中,一切都应该是异步什么。如果你的函数应该返回一个值,它应该是一个不需要很长时间执行的函数。只要您阅读Javascript的“用户输入”,您需要需要回调。你可能想看看其他灯箱实现是如何完成的,特别是在像JQuery等框架中。