Рамка Buster Buster
Я пытаюсь использовать Frame-Buster-Buster, как обсуждалось в этом вопросе: Frame Buster Buster... необходим код ошибки
Он прекрасно работает при остановке фрейм-барстера, к сожалению, он также вообще останавливает любое изменение URL-адреса - включая нажатие на ссылки или ввод нового адреса в адресной строке.
Есть ли способ обойти это? Может быть, очистив функцию window.onbeforeunload после загрузки кадра? Или совершенно другой подход?
1 ответ
Это то, что я в конечном итоге пошел. Он игнорирует только следующий редирект после загрузки страницы. Основным недостатком этого метода является то, что если фрейм никогда не вызывает свой фреймбастер (например, из-за того, что он не загружается должным образом, или сайт с фреймами изменяет свой код), это остановит следующую попытку перемещения страницы. Возможным решением было бы выполнить его после загрузки страницы фрейма, но непосредственно перед выполнением любого сценария. Другое решение состоит в том, чтобы перехватывать только изменения URL в базовом URL хоста в рамке. Я понятия не имею, если это возможно, хотя...
function ignore_next_redirect() {
var redirect_timer;
var prevent_bust = 0
window.onbeforeunload = function() { prevent_bust++; }
redirect_timer = setInterval(function() {
if (prevent_bust > 0) {
window.top.location = 'http://example.org/204'
window.onbeforeunload = function() {}
clearInterval(redirect_timer);
}
}, 1);
}
У него все еще есть проблемы - кажется, он прекращает загрузку контента, если это происходит в начале страницы.
Я знаю, что где-то есть решение - похоже, что в Google-изображениях оно работает. Буду обновлять с любым прогрессом...