2016-05-31 5 views
0

Я создал script, который загружает iframe в родительский DOM. работает так:Содержимое iframe замораживается? после неактивного

var myIframe = createFrame("myIframe","http://foaas.com/awesome/mrstackoverflow") // Just an example , который в основном делает это

function createFrame(id, link, style, modal){ 
    var iframe = document.createElement('iframe'); 
    iframe.frameBorder=0; 
    iframe.scrolling="no"; 
    iframe.setAttribute("frameborder", 0); 
    iframe.setAttribute("allowtransparency", true); 
    iframe.id=id; 
    iframe.setAttribute("src", link); 
    return iframe 
} 

и добавляется к DOM с

var myScript = document.getElementById('myScript'); 
var parent = myScript.parentElement; 
parent.insertBefore(myIframe, myScript.nextSibling); 

Все это работает ...

Мой вопрос через некоторое время, когда вкладка браузера стала «неактивной» (?)

Это происходит ... See image

экран, содержимое внутри фрейма выглядит следующим образом замороженном и ошибки (с некоторыми случайными частями других моих закладках.), Как смотреть. Только в пределах iframe, но как только я что-то делаю в DOM, он освежает, когда ничего не происходит, все возвращается к нормальной жизни.

До сих пор я встречал эту ошибку только на Mac и Safari.

Любые идеи относительно того, что здесь происходит, что-нибудь, что я могу найти, может вызвать что-то вроде этого?

С какой целью следует начать работу? Внутри скрипта или внутри скрипта iframe. Оба меня поддерживают. Возможно ли, что его iframe.setAttribute("allowtransparency", true);?

ответ

0

Сделано никакой разницы с/без allow transparency

все еще не уверен, почему это происходит постоянно. Кажется, что вкладка должна быть неактивной в течение некоторого времени, чтобы это произошло. Обнаружено обходное решение для этого, его не является оптимальным. Обновить вкладку/окно изменения видимости.

(function() { 
     var hidden = "hidden"; 

     // Standards: 
     if (hidden in document) 
      document.addEventListener("visibilitychange", onchange); 
     else if ((hidden = "mozHidden") in document) 
      document.addEventListener("mozvisibilitychange", onchange); 
     else if ((hidden = "webkitHidden") in document) 
      document.addEventListener("webkitvisibilitychange", onchange); 
     else if ((hidden = "msHidden") in document) 
      document.addEventListener("msvisibilitychange", onchange); 
     // IE 9 and lower: 
     else if ("onfocusin" in document) 
      document.onfocusin = document.onfocusout = onchange; 
     // All others: 
     else 
      window.onpageshow = window.onpagehide 
       = window.onfocus = window.onblur = onchange; 

     function onchange (evt) { 
      // refresh the iframe DOM or the container 
     } 
     if(document[hidden] !== undefined) 
      onchange({type: document[hidden] ? "blur" : "focus"}); 
    })(); 
Смежные вопросы