2013-10-24 3 views
2

У меня есть следующий код, который предупредит пользователя, если он обновит страницу, которая хорошо работает.Запретить пользователям обновлять страницу, но разрешить изменение URL-адреса?

Однако, когда пользователь нажимает кнопку или что-то, что может быть просто href = '#' или даже изменение URL-адреса на моем сайте, они также предупреждаются. Как я могу показать это предупреждение только при попытке обновить браузер?

Благодаря

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.'; 
}; 
+1

Правописание: 'потерять'' '' '' '' '' '' ' –

+0

lol thanks - это было бы неловко :) – realtek

+2

Я не хочу ничему, но я бы не писал * бы был *. ;-) –

ответ

2

решение концепции (в JQuery):

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(...) 
} 

EDIT: конечно предпосылка условий является целевой исходящих ссылок, таким образом, мы, вероятно, следует проверить HTTP, или другой способ, который отличает локальные от исходящих ссылок.

+0

Отлично, звучит как отличная идея! Спасибо :) – realtek

+1

помните, что это не учитывает переадресацию JS через обработчики onClick из элементов, отличных от привязок и форм, с помощью следующего синтаксиса: 'window.location.href = 'page.html'' или для перенаправления META –

+0

Хотя Хорошее решение, вы только фиксируете определенные действия по навигации. Как насчет того, когда пользователь переходит от страницы, введя URL-адрес или используя спину или вперед? –

Смежные вопросы