我需要防止用户刷新页面。禁用页面刷新
- 我已经编写了这样一种方式,不需要“前进”或“后退”运动。
- 但是,如果一个刷新页面,'一切'从头开始。
- 在页面刷新之前保存所有内容并在恢复之后并不理想。
- 为了防止页面刷新,我可以使用
alert();
,但有可能用户可能会忽略警告。 - 其他选择... ???
我需要防止用户刷新页面。禁用页面刷新
alert();
,但有可能用户可能会忽略警告。JavaScript不能阻止用户离开页面(刷新算作离开页面),因为它会违反用户的......无论如何......无论如何,这是不可能的。 (即使您尝试,浏览器也会有工具轻松绕过您可能编写的任何脚本)。
但是,如果您将使用HTML5中的pushState/replaceState以可视方式存储您的web应用程序的状态(并将服务器设置为从所有这些url中提供服务),则可以将用户导航到应用程序的正确位置刷新。
没有办法阻止用户刷新页面。如果你不需要保存那么多的数据,你可以输入URL(site.com/page.php?sort=2 & x = 3 & y = 4)。
如果你需要大量的数据,你只能希望用户不刷新页面。正如你所提到的,一种方法是显示一个对话框。
哦,猜你还可以使用AJAX存储数据服务器端,并为用户提供页面,因为它是最后一个状态。
您可以做的最好的事情是通过window.onBeforeUnload
事件处理程序请求确认。
window.addEventListener('beforeUnload', function(e) {
var dialogText = 'Dialog text here';
e.returnValue = dialogText;
return dialogText;
});
注意,处理函数应该将字符串值分配给事件对象的returnValue属性,并返回相同的字符串。 欲了解更多信息,请参阅MDN WindowEventHandlers.onbeforeunload。
唯一的其他选择是正确地重写您的应用程序,以便您不必监禁用户以弥补糟糕的设计。 –