Как узнать, что была нажата кнопка "Refresh" в браузере?
От: Finer Беларусь  
Дата: 29.10.08 12:17
Оценка:
Всем привет!

Подскажите, как можно узнать, что в браузере была нажата кнопка "Refresh"??
Re: Как узнать, что была нажата кнопка "Refresh" в браузере?
От: Finer Беларусь  
Дата: 29.10.08 12:51
Оценка:
Или как вообще узнать, что страница будет перезагружена??
События OnReload, к сожалению, нету.. чем его можно заменить?
Re[2]: Как узнать, что была нажата кнопка "Refresh" в браузе
От: anonymous Россия http://denis.ibaev.name/
Дата: 29.10.08 13:46
Оценка:
Здравствуйте, Finer, Вы писали:

F>Или как вообще узнать, что страница будет перезагружена??

F>События OnReload, к сожалению, нету.. чем его можно заменить?

onunload
Re[3]: Как узнать, что была нажата кнопка "Refresh" в браузе
От: Роман Дубров Украина Я@Blogspot
Дата: 29.10.08 13:56
Оценка:
anonymous пишет:

> F>События OnReload, к сожалению, нету.. чем его можно заменить?

>
> onunload

+ нюанс — при уходе со страницы, скажем по ссылке, оно тоже сфайрится
вывод: ставить куку а в onload проверять та ли это страница

--
np: [foobar2000] not started
Posted via RSDN NNTP Server 2.1 beta
http://www.linkedin.com/in/romandubrov .::. http://roman-dubrov.blogspot.com/ .::. http://www.flickr.com/photos/romandubrov/
Re[4]: Как узнать, что была нажата кнопка "Refresh" в браузе
От: Finer Беларусь  
Дата: 30.10.08 09:07
Оценка:
>> onunload

OnUnload в IE не отрабатывает, если document.readyState != 'complete' (http://blog.moxiecode.com/2008/04/08/unload-event-never-fires-in-ie/),
поэтому нужно узнать на этапе beforeunload, уходит человек со страницы, перезагружает ее, либо вообще это событие ложное (например, при клике на <a> с href != '' произойдёт beforeunload)

в beforeunload я хотел сделать что-то наподобие document.stop(), чтобы document.readyState стало равным 'complete' и таким образом вызывалось бы onunload, но такого метода не существует..
Re[5]: Как узнать, что была нажата кнопка "Refresh" в браузе
От: Роман Дубров Украина Я@Blogspot
Дата: 30.10.08 14:42
Оценка:
Finer пишет:

> OnUnload в IE не отрабатывает, если document.readyState != 'complete'

ага, точно

> поэтому нужно узнать на этапе beforeunload, уходит человек со страницы,

> перезагружает ее, либо вообще это событие ложное (например, при клике на
> <a> с href != '' произойдёт beforeunload)

ну дык не принципиально, onunload или onbeforeunload — все равно на
onload потом проверять

--
np: [foobar2000] not started
Posted via RSDN NNTP Server 2.1 beta
http://www.linkedin.com/in/romandubrov .::. http://roman-dubrov.blogspot.com/ .::. http://www.flickr.com/photos/romandubrov/
Re[6]: Как узнать, что была нажата кнопка "Refresh" в браузе
От: Finer Беларусь  
Дата: 30.10.08 17:01
Оценка:
РД>ну дык не принципиально, onunload или onbeforeunload — все равно на
РД>onload потом проверять

Это да, но есть действия, которые я хочу выполнить при выгрузке страницы. А если я эти действия помещу в OnBeforeOnload, то они выполнятся при ложном вызове(при клике на линку, например).
Поэтому я и хочу в OnBeforeOnload проверять, из-за чего оно произошло:
if (нажали F5 || нажали Ctrl+R || нажали "Reload" || нажали "Close")
{
действия...
}

OnLoad для моей страницы IE тоже не отрабатывает, т.к. не происходит OnReadyStateChange и document.readyState всё время равно interactive (не могу понять, из-за чего). Можно попробовать вызвать document.execCommand('Stop'); чтобы состояние стало complete, но опять же встаёт вопрос: куда этот вызов поместить??
Re[7]: Как узнать, что была нажата кнопка "Refresh" в браузе
От: Sinclair Россия https://github.com/evilguest/
Дата: 01.11.08 05:44
Оценка:
Здравствуйте, Finer, Вы писали:

F>OnLoad для моей страницы IE тоже не отрабатывает, т.к. не происходит OnReadyStateChange и document.readyState всё время равно interactive (не могу понять, из-за чего). Можно попробовать вызвать document.execCommand('Stop'); чтобы состояние стало complete, но опять же встаёт вопрос: куда этот вызов поместить??

Попробуй рассказать, зачем тебе это вообще надо.
Нормальные веб-приложения не должны различать рефреш, уход со страницы, и приход обратно на страницу.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[8]: Как узнать, что была нажата кнопка "Refresh" в браузе
От: Finer Беларусь  
Дата: 01.11.08 09:14
Оценка:
S>Попробуй рассказать, зачем тебе это вообще надо.

Рассказываю:
I need to do some actions with a user when he reloads(F5, "Reload"
button, Ctrl+R) or closes the page. The Unload event is a good
approach here. However, it is not called in IE when
document.readyState != 'complete' (for example, the readyState for my
site is always 'interactive').
The only event I can go with is OnBeforeUnload. But every click on <a>
with href="javascript:" calls OnBeforeUnload.. So I need to detect
somehow what was the reason of this OnBeforeUnload, and if this reason
is not 'page reload' or 'close' I will just skip this event.

Unfortunately all my workarounds failed:
1) to set the onclick event for each link, where I set the flag and
check this flag in OnBeforeUnload.
It works, but I should set onclick on every application load event in
my ASP.NET api. So what to do with dynamically added controls which
contain anchors inside?
2) I noticed that __doPostBack also happens when we click on <a>. We
may override window.__doPostBack method (the same as to catch
document.forms[0].onsubmit event) where we also can set the flag and
check it up in OnBeforeUnload. But OnBeforeUnload may happen before
__doPostBack. So this method also doesn't pass..
3) To stop loading the document by using document.execCommand('Stop').
This is done to make readyState='complete' and use OnUnload instead of
OnBeforeUnload. But where we should place this stop-method??

Вот.. В общем, нужно узнать причину OnBeforeUnload (для этого я и хочу узнать,
как распознать клик по "Refresh"). Либо найти альтернативу событиям
OnBeforeUnload и OnUnload, чтобы в этой альтернативе выполнить нужные мне
действия над пользователем.
Re[9]: Как узнать, что была нажата кнопка "Refresh" в браузе
От: Sinclair Россия https://github.com/evilguest/
Дата: 12.11.08 11:57
Оценка:
Здравствуйте, Finer, Вы писали:

S>>Попробуй рассказать, зачем тебе это вообще надо.


F>Рассказываю:

F>I need to do some actions with a user when he reloads(F5, "Reload"
F>button, Ctrl+R) or closes the page.
Это всё и так понятно. Непонятно, что за "actions with a user". Что это за действия такие, что для них reload и unload должны вести себя по-разному.

F>Вот.. В общем, нужно узнать причину OnBeforeUnload (для этого я и хочу узнать,

F>как распознать клик по "Refresh"). Либо найти альтернативу событиям
F>OnBeforeUnload и OnUnload, чтобы в этой альтернативе выполнить нужные мне
F>действия над пользователем.
Ну, расставить всем тегам <a> нужный клик-хэндлер, в принципе, можно при помощи behaviors.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: Как узнать, что была нажата кнопка "Refresh" в браузере?
От: Аноним  
Дата: 17.11.08 16:09
Оценка:
Здравствуйте, Finer, Вы писали:

F>Всем привет!

F>Подскажите, как можно узнать, что в браузере была нажата кнопка "Refresh"??

Может я не в тему или не понял вопрос, а нельзя сравнить урл текущей (после рефреш) страницы и страницы из history.back() или refferer к примеру? Будет время — проверю.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.