如何告诉Web浏览器用户修改了页面?

时间:2014-01-17 17:39:05

标签: javascript jquery dom

我让用户在html页面上进行一些可视化设置。这可能需要一些时间,所以我不希望用户通过某种方式关闭网页来完成设置(没有警告)。

如果我使用了文本区域,复选框等,则浏览器会警告用户。如何告诉浏览器在我的情况下警告用户?

2 个答案:

答案 0 :(得分:5)

您可以在下面的示例中使用类似“unsavedChanges”的全局变量。然后,如果用户更改了任何内容,则需要设置该变量。或者在用户关闭网页之前需要确认的任何情况下。

 var unsavedChanges = 0;
 window.onbeforeunload = function (e) {
    if(unsavedChanges != 0){
         e = e || window.event;

         // For IE and Firefox prior to version 4
         if (e) {
            e.returnValue = 'There is some unsaved changes!';
         }

         // For Safari
         return 'There is some unsaved changes!';
    }
};

答案 1 :(得分:0)

浏览器通常会通过随页面发送的HTTP标头获取此信息。

例如,Last-Modified标头告诉浏览器页面的年龄。浏览器可以向页面发送简单的HEAD请求以获取最后修改的值。如果它比浏览器在缓存中的更新,则浏览器可以重新加载它。

还有一堆与缓存相关的其他标头(如Cache-Control)。查看:http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html