Javascript 如何:在调用函数(param)时将unbeforeunload调用绑定到窗口?

Javascript 如何:在调用函数(param)时将unbeforeunload调用绑定到窗口?,javascript,jquery,Javascript,Jquery,用户可以画画的flash电影正在调用JS函数。每当电影中发生更改时,都会调用listenToUnload(true)。每当按下Flashmovie中的save按钮时listenToUnload(false)被调用 function listenToUnload(saved) { if (saved) { $(window).bind('unload', function() { closeWindowWarning; }); } el

用户可以画画的flash电影正在调用JS函数。每当电影中发生更改时,都会调用
listenToUnload(true)
。每当按下Flashmovie中的save按钮时
listenToUnload(false)被调用

function listenToUnload(saved) {

   if (saved) {

      $(window).bind('unload', function() {
          closeWindowWarning;
      });

   } else if (!saved) {
       $(window).unbind('unload');
   }

}

function closeWindowWarning() { return "You haven't saved your last changes"; }
所以,我想知道这是否是正确的方法? 因为可以在一行中多次调用
listenToUnload(true)
,我不希望将unload函数多次绑定到窗口

这是正确的做法吗?还有其他方法吗


谢谢

首先,您需要在卸载
之前绑定
,而不是
卸载

您可以将标志(是否在卸载前确认)存储在变量中,或存储在
$(文档).data('confirm_unload',TRUE_或FALSE)
中,然后:

function closeWindowWarning() { 
    if ($(document).data('confirm_unload'))
        return "You haven't saved your last changes"; 
}
当然,还要绑定beforeunload事件一次:

$(window).bind('beforeunload', closeWindowWarning)

您不需要在另一个函数中包装
closeWindowWarning

但是这个变量是如何从flash中发送/设置的?
函数listenToUnload(flag){$(document).data('confirm_unload',flag);}
我完全不明白。你能提供更多的细节吗。我无法调用$(文档)。Actionscript中的数据!定义函数
listenToUnload
,如我前面的注释所示。你说Actionscript总是调用这个函数,对吗?