2015-09-02 4 views
0

Моего основного кода выглядит следующим образом:Обнаружение IFrame изменения Src против содержания перезагрузки

<iframe id="iFrame1" style="display: none;"></iframe> 
<iframe id="iFrame2" style="display: none;"></iframe> 

$("#iFrame1").load(function() { 
     // display iFrame1, hide iFrame2 
     // set timeout to load next page 
    }); 
$("#iFrame2").load(function() { 
     // display iFrame2, hide iFrame1 
     // set timeout to load next page 
    }); 

У меня есть набор список страниц (тот же домен, никаких проблем с отображаются внутри плавающего фрейма), которые не будут отображаться в iFrames (за один раз видно только 1 iFrame), проходя через 30 минут (страницы отображают спортивные результаты).

В основном, это работает, так как src iFrame 1 устанавливается с использованием $("#iFrame1").attr("src", "<new_url>");. После того, как страница полностью загружена, функция load запускает и отображает iFrame1, скрывая iFrame2. Затем функция тайм-аута устанавливается для загрузки следующей страницы в iFrame2, которая вызывает функцию load и отображает iFrame2, скрывая iFrame1. Это было сделано таким образом, чтобы загрузка страницы не была видимой пользователю, iFrame отображается только после завершения загрузки страницы, что обеспечивает плавный переход между страницами.

Все это работает отлично! Проблема в том, что одна из страниц настроена на перезагрузку (location.reload(true);) в определенное время суток, и я не контролирую эту страницу. Проблема здесь в том, что перезагрузка этой страницы также запускает функцию load этого iFrame, что приводит к некорректному скрытию iFrame.

Мой вопрос в том, есть ли способ разграничения фактического src изменения iFrame, по сравнению с тем, что содержимое iFrame перезагружается (и src остается неизменным)? Я посмотрел document.referrer, но это ничего не дает.

ответ

0

Я решил решить мою проблему, добавив проверку функции load каждого iFrame, чтобы проверить, действительно ли iFrame уже виден или нет. Делайте только обмен, если iFrame в настоящее время не отображается.

<iframe id="iFrame1" style="display: none;"></iframe> 
<iframe id="iFrame2" style="display: none;"></iframe> 

$("#iFrame1").load(function() { 
    // If iFrame 1 is hidden, show it 
    if($("#iFrame1").css("display") == "none") 
    { 
      // display iFrame1, hide iFrame2 
      // set timeout to load next page 
    } 
}); 
$("#iFrame2").load(function() { 
    // If iFrame 2 is hidden, show it 
    if($("#iFrame2").css("display") == "none") 
    { 
      // display iFrame2, hide iFrame1 
      // set timeout to load next page 
    } 
}); 
Смежные вопросы