обработка перенаправления при загрузке JS через тег сценария в заголовке HTML-документа

Есть 2 случая:

1) Я загружаю файл JS с сайта facebook с помощью тега script. Если этот сайт заблокирован диспетчером доступа к сети (websense), мы получаем ответ 302 и автоматически перенаправляемся на какую-то страницу. Как справиться с этим состоянием?

2) если точка № 1 проходит, то он внутри создает IFrame и пытается получить доступ к другому сайту facebook сейчас, если он заблокирован, то произойдет то же самое, но на этот раз некоторый текст появится на странице вместе с другим содержимым страницы, видимым для пользователя. Как справиться с этим?

Пожалуйста, помогите мне здесь.

С уважением, ПВ.


person P.V    schedule 08.02.2011    source источник


Ответы (1)


Самый простой способ справиться с первым случаем — проверить переменную или пространство имен, загруженное javascript из Facebook.

// lets assume the facebook js file contains a "fb" namespace
if(fb || window.fb){
  // do some action since we have facebook loaded
  var fbFrame = document.getElementsByTagName('iframe')[0];
  fbFrame.onerror = function(){
    // facebook failed to load :( do redirect
    window.location.href = "someOtherPage.html";
  };
}else{
  // facebook failed to load :( do redirect
  window.location.href = "someOtherPage.html";
}

Во второй части вы можете добавить прослушиватель событий onerror в iframe. Когда возникает ошибка при загрузке iframe, вызывается обработчик onerror.

Вот хороший вопрос, который охватывает это: Как я могу обрабатывать ошибки в загрузка iframe?

person Shakakai    schedule 08.02.2011
comment
Я думаю, что могу попробовать первый, но поскольку Iframe создается самим facebook, мы не можем вводить какое-либо свойство для Iframe для обработки ошибок. Дайте мне знать, что вы думаете. - person P.V; 09.02.2011
comment
Вы по-прежнему должны иметь возможность выполнить запрос document.getElementsByTagName для iframe, а затем прикрепить свойство onerror. - person Shakakai; 09.02.2011
comment
Кстати, в моем обновленном примере предполагается, что на странице нет других iFrames. Если у вас их несколько, вам придется перебирать их, чтобы выбрать правильный iframe facebook. - person Shakakai; 09.02.2011