Javascript 警告用户刷新页面但允许更改url?
我有下面的代码,如果用户刷新工作正常的页面,它将警告用户 但是,当用户单击某个按钮或可能只是href='#'的内容,甚至我的网站更改了url时,他们也会收到警告。如何仅在他们尝试刷新浏览器时显示此警报 谢谢Javascript 警告用户刷新页面但允许更改url?,javascript,jquery,Javascript,Jquery,我有下面的代码,如果用户刷新工作正常的页面,它将警告用户 但是,当用户单击某个按钮或可能只是href='#'的内容,甚至我的网站更改了url时,他们也会收到警告。如何仅在他们尝试刷新浏览器时显示此警报 谢谢 window.onbeforeunload = function (e) { e = e || window.event; // For IE and Firefox prior to version 4 if (e) { e.returnValue
window.onbeforeunload = function (e) {
e = e || window.event;
// For IE and Firefox prior to version 4
if (e) {
e.returnValue = 'WARNING: You are about to reload this page, doing so will loose all your open tabs and loose any unsaved data.';
}
// For Safari
return 'WARNING: You are about to reload this page, doing so will loose all your open tabs and loose any unsaved data.';
};
概念解决方案(在jQuery中):
编辑:当然条件的前提是针对传出链接,因此我们可能应该检查http,或者其他区分本地和传出链接的方式。拼写修复:
丢失
不松散:)lol谢谢-那会很尴尬:)我不想挑剔,但我不会写,要么.-)我看到这一效果的唯一方法是,如果页面上有任何内容发生更改且未保存,则全局变量将实际设置为TRUE,然后在保存时设置为FALSE-这样,您就可以知道对话框在任何情况下都应该在访问者面前出现,为窗口分配函数。不建议使用onbeforeuload
(因为它可以覆盖分配给相同beforeunload函数的其他函数)…和attachEvent
处理程序是更好的选择;-)太好了,听起来是个好主意!谢谢:)请注意,这并不能解释通过onClick处理程序从锚和表单以外的元素通过以下语法进行JS重定向:window.location.href='page.html'
或元重定向。尽管这是一个好的解决方案,但您只捕获了某些导航操作。当用户通过键入URL或使用back或forward离开页面时会怎么样?@Buchow\u PHP在这种情况下,onbeforeupload事件应该触发(实际上,你已经让我思考了,我不再确定:D)。不幸的是,由于不可能访问历史对象(就用户之后访问的内容或之前到达给定页面的内容而言),因此(我认为)完全在JS中这样做是不可能的。在FF下测试了后退和前进按钮,是的,单击它们会在卸载之前启动(为什么我怀疑它不会:D)。虽然我发现对于后退按钮,我们可以访问文档.referer
(对于非历史
操作页面,这应该是上一页?)
var going_away = true;
$("a").click(function()
{
// if it's local link - $(this).attr('href').indexOf("#") == 0 || $(this).attr('href').indexOf("/") == 0
going_away = false;
});
$("form").submit(function()
{
// if it's local action - $(this).attr('action').indexOf("/") == 0
going_away = false;
});
window.onbeforeunload = function (e) {
if (going_away)
window.confirm(...)
}