Во-первых, событие onbeforeunload очень даже кроссбраузерное на сегодняшний день.
Во-вторых, не всякое действие можно совершить в обработчике этого события.
В-третьих, какой смысл редиректить пользователя, который ушел? (Ну кроме всяких грязных штучек)
Как вариант, при закрытии вкладки со страницей. Выделяете верхнюю условную границу по всей ширине видимого окна, если пользователь находиться в ее пределах, теоретически он пытается закрыть вкладку, создаёте событие и обработчик на него. Но это сто процентов не самое хорошее решение и такая практика поведения не приветствуется.
Сие фокус не сработает. Так как:
1. Надо сбросить событие.
2. Надо установить значение для returnValue, иначе Хром просто проигнорирует сообщение.
3. Ну и отменить закрытие вкладки не получится.