Задать вопрос

JQuery: как отследить переход на другую страницу по выполнению JavaScript кода?

Есть необходимость добавлять кое-что в адрес, по которому осуществляется переход на другую страницу. Т.е. юзер кликнул на линк или нажал на кнопку, а JS добавляет к URL еще один параметр(токен) — борьба с XSS на самом деле.



Как отследить обычные <a, <form и т.д. понятно. Но что делать, если переход осуществляется по выполнению onclick? Вроде как надо отслеживать событие «change» для window.location, но как я понял, этого сделать нельзя.



Ни я, ни мои коллеги не специалисты по JS, знаем его постольку-поскольку, так что чешем репы и придумать не можем. Приложение офигенного размера и написано очень криво, выискивать все вхождения JavaScript мы будем до второго пришествия.



Никто не поможет скаральными знаниями?
  • Вопрос задан
  • 21229 просмотров
Подписаться 4 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 7
@dmitryklerik
Возможно вам поможет jQuery событие 'unload': api.jquery.com/unload/?
Ответ написан
Комментировать
sl_bug
@sl_bug
В каждом месте где есть изменение window.location добавить то что вам нужно.
Ответ написан
Комментировать
@zolotyh
В Chrome так заработало
window.onbeforeunload = function (event) {console.log(event.target.URL); return false;}
Ответ написан
ZyL
@ZyL Автор вопроса
Этот вариант всегда в запасе. Но я надеюсь на чудо и гуру.
Ответ написан
Комментировать
ZyL
@ZyL Автор вопроса
Нет, не помогает, пробовали — window.location остается прежним. Вот тут один крендель пишет про как бы обработку события:

$( window.location ).trigger(
"change",
{
currentHref: strLocation,
currentHash: fnCleanHash( strHash ),
previousHref: strPrevLocation,
previousHash: fnCleanHash( strPrevHash )
}
);


Но это срабатывает (и пример у него такой же) только на обычные линки типа <a, на JavaScript не работает. К тому же он там пишет, что As you know, window.location is a Javascript object that contains information about the URL including hash and search strings. Т.е. это не HTML объект, а Javascript, т.е. вроде как JQuery на его обработку нельзя настроить?
Ответ написан
@1nd1go
Есть стандартный callback — window.onbeforeunload. Я думаю вы можете там изменять куда переходить.
Тут плагин для jquery: plugins.jquery.com/plugin-tags/windowonbeforeunload
Ответ написан
ZyL
@ZyL Автор вопроса
— * 1nd1go
Вроде что-то полезное, спасибо.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Rocket Смоленск
от 80 000 до 130 000 ₽
div. Ставрополь
от 40 000 до 90 000 ₽
Wanted. Санкт-Петербург
До 220 000 ₽
18 дек. 2024, в 13:22
30000 руб./за проект
18 дек. 2024, в 12:37
10000 руб./за проект
18 дек. 2024, в 12:22
5000 руб./за проект