На этот вопрос уже есть ответ здесь:
У меня есть страница, которая перенаправляется, когда этого не должно быть, и я пытаюсь выяснить, кто это делает. Сначала я попытался захватить window.location:
window.location = (function (location) {
// location is now hidden inside a closure. We can override it
var Location = Object.create(location);
// Location is now our proxy. We can use it to catch changes
window.__defineGetter__('location', function () { return Location });
window.__defineSetter__('location', function (x) { debugger; location = x; return x; });
// etc etc, considered assignments to location.href, location.search, location.host etc., as well as calls to location.replace and location.assign
}(window.location));
Это вообще не работало в Chrome. Вы не можете использовать сеттеры и геттеры для window.location по соображениям безопасности. ХОРОШО. Следующим, что я попробовал, было наблюдение за onunload и onbeforeunload :
['unload', 'beforeunload'].forEach(function (evName) {
window.addEventListener(evName, function () {
debugger; // Chance to check everything right before the redirect occurs
});
});
. Я знал, что значение window.location останется прежним до тех пор, пока не произойдет событие onunload, опять же из соображений безопасности, но я надеялся найти какую-то другую подсказку; нет такой удачи. Затем я попытался поставить точки останова в каждой точке, которую я могу найти в своих собственных скриптах, где может быть назначено window.location. Ни один из них не попадает в соответствии с отладчиком Chrome. Арх. Кстати, в FF этого перенаправления не происходит, и я уже пытался перезапустить Chrome. Я чувствую, что действительно перепробовал все и ничего не добился, что, надеюсь, означает, что я собираюсь повысить свой уровень как разработчик? Пожалуйста?
Есть ли способ в любом браузере для меня, человека, работающего с отладчиком, сломать строку, которая перенаправляет местоположение страницы? Я понимаю, что автоматический доступ к этой информации имеет последствия для безопасности, но есть ли что-то, что дает привилегии разработчику и позволяет сделать это? Если нет, то каков нормальный способ справиться с такой ситуацией? Это кажется достаточно распространенным явлением, и я не думаю, что кому-то нравится блокироваться на часы или дни из-за концептуально простой проблемы. ТИА