глобальный перехватчик для сторонних скриптов, которые перенаправляют - PullRequest
1 голос
/ 28 января 2012

Один из сценариев стороннего виджета сломался во время выполнения и перенаправил весь трафик с моей домашней страницы на свой.

Поскольку я не могу их убить, мне придется либо убить сценарий, либо найти способ уничтожить любую попытку стороннего JavaScript-кода перенаправить браузер. Самые многообещающие события, которые я обнаружил, это .unload() и window.onbeforeunload, и моя идея состоит в том, чтобы, надеюсь, проверить запрос GET, а затем проверить URL-адрес как не соответствующий ни одной из действительных ссылок на моей странице. Не знаете, как получить значение GET события, учитывая, что оно связано не с какими-либо щелчками или действиями на странице, а с тем или иным обманом стороннего .js?

Кому-нибудь повезло, если вы нашли решение для чего-то подобного?

1 Ответ

0 голосов
/ 29 января 2012

Я не знаю, как можно перехватить все возможные места, где сторонний javascript может установить window.location, вызывающий перенаправление, и предварительно выполнить его.Это не метод, это просто свойство, для которого нет способа заменить / переопределить.

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

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

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

...