У меня есть страница, перенаправляющая, когда этого не должно быть, и я пытаюсь понять, кто это делает. Сначала я попробовал захватить окно. 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. Argh. Кстати, это перенаправление не происходит в FF, и я уже пробовал перезапустить Chrome. Я чувствую, что я действительно пробовал все и никуда не уходил, что, надеюсь, означает, что я собираюсь выступить в качестве разработчика? Пожалуйста?
Есть ли какой-либо способ в любом браузере для меня, человека, использующего отладчик, для разрыва строки, перенаправляющей местоположение страницы? Я понимаю, что есть последствия для безопасности для автоматического доступа к этой информации, но разве нет ничего привилегированного разработчика и позволяет сделать это? Если нет, каков нормальный способ борьбы с подобной ситуацией? Это кажется достаточно общим, и я не думаю, что кому-то нравится блокироваться в течение нескольких часов или дней по концептуально простой проблеме. TIA
В худшем случае вы можете просто поставить точку останова где-то, а затем вручную выполнить код, пока не найдете нарушителя –
Правда, и это то, что я сейчас делаю, но в качестве упражнения рассмотрим случай, когда перенаправление происходит из динамического include script tag: // Переадресация на google.com document.body.appendChild (document.createElement ('script')). appendChild (document.createTextNode (decodeURIComponent ( )% 77% 69% 6e% 64% 6f% 77% 2e% 6c% 6f% 63% 61% 74% 69% 6f% 6e% 2e% 61% 73% 73% 69% 67% 6e% 28% 27% 68 \ % 74% 74% 70% 3a% 2f% 2f% 77% 77% 77% 2e% 67% 6f% 6f% 67% 6c% 65% 2e% 63% 6f% 6d% 27% 29 '))) Вот почему мне интересно, есть ли трюк для резки гордиев узла, а если нет, то что делают профессионалы, чтобы свести к минимуму время, затрачиваемое на такие проблемы. –
Любые обновления по этому вопросу? Я пытаюсь сделать то же самое. –