如何:如果调用函数(param),将unbeforeunload调用绑定到窗口?

时间:2012-02-20 16:43:40

标签: javascript jquery

用户可以绘制的flash电影是调用JS函数。每当电影中的某些内容发生变化时listenToUnload(true)。每当按下Flashmovie中的保存按钮时,都会调用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)可以连续多次调用,并且我不希望将卸载函数多次绑定到窗口。

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

谢谢

1 个答案:

答案 0 :(得分:0)

首先,您需要绑定beforeunload,而不是unload

您可以在变量中存储标记(是否在卸载前确认),或在$(document).data('confirm_unload', TRUE_OR_FALSE)中然后:

function closeWindowWarning() { 
    if ($(document).data('confirm_unload'))
        return "You haven't saved your last changes"; 
}

当然,将beforeunload事件绑定一次:

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

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