частичный location.href

usascha

Новичок
частичный location.href

Есть сотрудник, который упорно не хочет закрывать одну программу - просто переходит на другую страницу.
Пытаюсь сделать следующее: если кнопка выход не нажата, а происходит переход на другую страницу, то выполняется принудительный выход из программы. Все бы хорошо, да вот при переходах внутри программы, функция всегда спрашивает выйти из системы или нет.

Вот код:

Код:
<script>
<!-- 
function force_exit() {
	if (window.location.href == 'http://www.site.ru/news/work/') {
		return true;
	} else {
		if(confirm('Как насчет выйти из системы?')) 
			exiting.submit();
		else 
			return false;
	}

}
-->
</script>
<body onunload="force_exit()" ...
Как бы обозначить что пользователь не уходит с сайта, а только открывает новую ссылку внутри системы.
Варианты: поставить признак или основываться на location. Но ни то ни другое не получается.
 

white phoenix

Новичок
Не получится через проверку location, т.к. я протестил на Opera 8.51:
<body onunload="alert(location.href)">
И при переходе по ссылке выдавалась старая ссылка (а не та на которую нажали).
Как вариант, можно сделать frame во всю страницу, и сделать <body onunload="exiting.submit()">.
confirm делать не надо т.к. при return false; из onunload, всё равно страничка поменяется (опять же, проверил на Opera 8.51).

-~{}~ 13.01.06 00:15:

P.S. А может проще поговорить с сотрудником?
 

kruglov

Новичок
Отсоединять по таймауту.

Можно сделать iframe, в котором скриптом каждую минуту дергать сервер. Не было дерганий минуты 3 - значит, ушел, считаем его коммунистом. Если нет - то нет.
 

white phoenix

Новичок
kruglov
Это был бы идеальный вариант (по таймауту), но может быть ему надо сделать какие-то действия сразу после выхода, а не ждать следующего запуска скрипта, при котором произойдет проверка таймаута сессий.
 

kruglov

Новичок
действия можно делать при попытке следующего логина (подозреваю, что имеет место "монопольный режим работы" - один залогинился, остальные гуляют)

или кроном каким...

-~{}~ 13.01.06 01:34:

А вообще, зачем "делать какие-то действия сразу после выхода", если этих изменений никто не увидит? А как попытается увидеть, тут мы эти действия и применим.

Вспоминается старая шутка физиков-теоретиков "как выглядит электрон, когда на него никто не смотрит"
 

white phoenix

Новичок
kruglov
> А вообще, зачем "делать какие-то дейс...
Действительно... хотя вдруг какие-то действия вне веб-интерфейса должны происходить, а иначе нет смысла в onunload.
> Вспоминается старая шутка физиков-теоретиков
Отец мне в детстве сказал её :)
 

usascha

Новичок
Мне не нужна кроссброузерность - достаточно только IE.
Монопольности режима нет и после выхода сотрудник ничего не делает - не нужно. Если нужно - снова войдет в систему.

Поговорить с ней я уже пытался много раз... Такой вот она человек. :((

Я почему спросил этот вариант, он быстрее пишется - 5 мин., но потом возник этот вопрос и я застрял на целый день.

Существует ли в JS проверка location регулярными выражениями?
Надо вернуть true, если хотя бы часть location соответствует строке http://мой сайт/я_админ

Только умоляю, дайте точный синтаксис, я облазил интернет какой знал и этого ответа не нашел.
 

usascha

Новичок
kruglov, я вообщем-то сам д.б. догадаться про это...

вот что получилось:
Код:
<script>
<!-- 
function force_exit() {
	wholeurl = window.location.href;
	if (wholeurl.substring(0,32) == "http://мой_сайт/я_админ") {
		return true;
	} else {
		if(confirm('Выход!')) 
			exiting.submit();
		else 
			return false;
			document.location.href= self.location.href;
	}
}
-->
</script>
НО как сказал white phoenix, страничка действительно меняется.
 

white phoenix

Новичок
usascha
А если не нужно никаких действий, то какой смысл в этом всём?
> Такой вот она человек.
Интересный случай, а чем аргументирует?
 
Сверху