Здравствуйте, задача следующая.
При нажатии на ссылку человек переходит по ней (открывается в новой вкладке), а на ссылаемой странице запускается таймер. Если пользователь вернется до окончания таймера ему должна выдаться ошибка.
Реализую следующим образом, если окно становится активным(получает фокус), то выдается ошибка.
Но возникает проблема, при первом возвращении скрипт не срабатывает, срабатывает когда человек уходит с вкладки и возвращается. Т.е. скрипт не считает что при переходе по ссылке теряется фокус, новая вкладка открывается средствами html.
Как с помощью jquery сделать окно не активным?
Пример кода (не нужная часть вырезана)
<title>10</title>
Ссылка по которой переходим
<a class="a-perehod" id="{{id}}" href="{{url}}" target="_blank">Кликуть</a>
<div>Осталось: <span id="timer">10</span> сек.</div>
<p id="par1"></p>
<p class="user" id="{{usl}}"></p>
<script>
$( ".a-perehod" ).click(function() {
//Id ссылки и пользователя
id = $(this).attr("id");
id = parseInt(id);
user = $(".user").attr("id");
user = parseInt(user);
//Запрос на получение данных ссылки
$.post("frame_perehod/",
{
'pk': id,
},
function(data) {
//Устанавливаю в title значение таймера
document.title = data
//Функция обработки таймера
function timer(){
var obj = $("title")[0];
var obj2 = $("#timer")[0];
obj.innerHTML--;
obj2.innerHTML--;
if (obj.innerHTML==0){
alert('Hello');
//При завершение таймера отправка POST запроса
$.post("frame_perehod1/",
{
'pk': id,
'user': user,
},
function(data) {
$("#par1").text(data);
}
);
setTimeout(function(){},1000);
} else {
setTimeout(timer,1000);
//Получаем фокус, значит ошибка
window.onblur = function () {
$(".mess").html("Error");
}
}
}
setTimeout(timer,1000);
}
);
});
</script>
UPD: Нужно, что бы до окончания таймера человек не возвращался на страницу, а если вернулся, то вывести ошибку.