代码之家  ›  专栏  ›  技术社区  ›  Toby

警告用户将丢失数据的最佳实践

  •  8
  • Toby  · 技术社区  · 14 年前

    我有一个使用大量javascript(主要是jquery)的站点,我需要一种良好的全局方法来让用户知道,当他们离开某个特定页面时,他们将丢失未保存的更改。

    目前,我在输入上放置了一个onchange事件,并将主导航包装在一个函数中,该函数在单击时将显示警告。

    这感觉真的很笨重,不能很好地伸缩(导航不是主导航的一部分,需要手动包装,这离理想状态还很远)

    3 回复  |  直到 14 年前
        1
  •  6
  •   djdd87    14 年前

    我有一个 onchange 我输入的事件并设置 isDirty 变化时变为真。

    然后我用 onbeforeunload 警告用户未保存更改的事件:

    var isDirty = false;
    
    window.onbeforeunload = function (evt) {
        if (isDirty) {
            return 'If you continue your changes will not be saved.';
        }
    }
    
        2
  •  5
  •   jAndy    14 年前

    你在找 onbeforeunload 事件。

    喜欢

    $(window).bind('beforeunload', function(){
        return "Are you really sure?";
    });
    

    本地人:

    window.onbeforeunload = function(){
       return "Are you really sure?";
    });
    

    当然,这只是“预防方法”。您仍然需要一些逻辑来知道您的站点上是否有更改。这很容易通过使用 boolean 例如。此外,你应该像

     if('onbeforeunload' in window){}
    

    我认为现在所有的主要浏览器都支持这个事件,但是仍然有一些浏览器不知道这个事件。因此,如果上述条件失败,您仍然可以优雅地后退到另一种方式。

        3
  •  0
  •   Gary Green    14 年前

    使用在 on unload 当页面要更改时要捕获的窗口事件。然后提示lightbox警报,警告用户如果离开任何未保存的数据都将丢失。