Jquery Эффект Onunload

Я хотел бы использовать эффект jquery slideUp, когда пользователь уходит со страницы, просто чтобы страница выглядела круто при закрытии.

Я предполагаю, что мне следует использовать событие onunload, но как я могу отложить закрытие страницы достаточно долго, чтобы эффект завершился?

Одна из опций, которая пришла в голову, - это эффективный захват функции закрытия страницы, сохранение ее в некоторой переменной и последующее ее выполнение после запуска эффекта, но я понятия не имею, как мне это сделать.

Любые предложения или альтернативные идеи приветствуются

7 ответов

Решение

Насколько я знаю, единственный способ не дать пользователю покинуть страницу - это событие onbeforeunload, которое нельзя отменить. Вместо этого вы возвращаете строку из этого метода, браузер предлагает пользователю диалог Да / Нет, жизнь продолжается. 276660 имеет больше информации об этом.

Я не думаю, что вам повезет с этим.

То, что вы ищете, это событие onbeforeunload.
просто предупреждение, хотя... это должно быть очень быстро... или ваши посетители, вероятно, будут ненавидеть это, независимо от того, как круто это выглядит

что касается предотвращения перемещения страницы до завершения анимации, это большая проблема... любая анимация будет полагаться на setTimeout / setInterval, и страница не будет ждать их завершения перед тем, как уйти.

Делать что-либо, кроме закрытия окна, когда пользователи просят, нарушает контракт с пользователем. Окно браузера не ваше, это пользователи, и как бы круто ни был эффект, оно неизбежно раздражает большинство ваших пользователей.

Событие onbeforeunload очень ограничено в том, что оно может делать. Он должен вернуть строку, которая затем используется, чтобы запросить у пользователя подтверждение о выходе из страницы. Это не будет работать для крутой анимации.

Я бы согласился на 100% с ответом Джонатана Фингланда и добавил бы это.

В IE (я не уверен, какие версии поддерживают это, я знаю, что IE6 поддерживал), вы можете использовать некоторые метатеги правильности для достижения затухания и т. Д., Покидая страницу. Тем не менее, это ограничено в браузерах (только IE), поэтому вы застряли для использования в разных браузерах.

Вы можете обнаружить, что загрузка нового контента через AJAX даст вам лучший контроль над эффектами и переходами, а также уменьшит фактор раздражения для пользователя, который может возникнуть в результате попытки таким образом перехватить действия браузера.

Я хотел бы взглянуть на использование формы слайдера, как упомянуто выше (см., Например, http://webdesignledger.com/tutorials/13-super-useful-jquery-content-slider-scripts-and-tutorials), или просто загрузить панели содержимого в ответ на клики пользователей.

Почему нет, вместо того, чтобы создавать "крутой" эффект, когда пользователь просто хочет уйти с вашего сайта (даже если пользователь закрывает браузер / вкладку, событие unload будет запущено), и раздражать простого пользователя этим... предотвращая ему / ей, чтобы вернуться снова...

... это "крутой" эффект, когда пользователь впервые заходит на ваш сайт? как нормальный вступительный эффект?

Я сделал это как простую идею, вы можете увидеть это здесь: http://www.balexandre.com/jmfc

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

Недавно я использовал этот подход, чтобы я мог вызывать метод flex через FABridge (который иначе был бы уничтожен до завершения вызова метода flex). Я хотел бы услышать ваши комментарии по этому вопросу.

Другие вопросы по тегам