Рамка 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-изображениях оно работает. Буду обновлять с любым прогрессом...

Другие вопросы по тегам