Бастер Бастер Бастер

Я пытаюсь использовать блокировку кадров, как обсуждалось в этом вопросе: Frame Buster Buster ... нужен код buster

Он отлично работает для остановки блокировки кадров, но, к сожалению, он также останавливает любое изменение URL-адреса, включая нажатие ссылок или ввод нового адреса в адресной строке.

Есть ли способ обойти это? Может быть, очистив функцию window.onbeforeunload после загрузки фрейма? Или совсем другой подход?


person zaius    schedule 19.07.2009    source источник
comment
Это звучит как злое кодирование!   -  person Adam A    schedule 19.07.2009
comment
Ха. Ничего страшного — это панель инструментов, на которой отображаются сайты социальных сетей. Myspace использует фреймбастер.   -  person zaius    schedule 19.07.2009
comment
Если Myspace наложила ограничение на контент, я предполагаю, что им не понравится, если вы обойдете ограничение, с которым столкнулись. Можете ли вы быть абсолютно уверены, что ограничения на строку URL непреднамеренны?   -  person David-SkyMesh    schedule 19.07.2009
comment
Я должен иметь возможность отображать свою страницу Myspace так, как захочу. Пока Myspace не предоставит внешний API, фрейм — это лучшее, что я могу сделать.   -  person zaius    schedule 19.07.2009


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

person zaius    schedule 23.09.2009