iframe内容会冻结吗?不活跃

时间:2016-05-31 12:48:59

标签: javascript macos iframe safari

我创建了一个script,它将iframe加载到父DOM中。 像这样工作:

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里面的内容看起来像这样冻结和错误(我的其他标签的一些随机部分。)就像看。 仅限于iframe ,但是一旦我在DOM中执行某些操作,它就会刷新,因为一切都没有发生,一切都恢复正常。

到目前为止,我只在 Mac和Safari 上遇到此错误。

关于这里发生了什么的任何想法,我能找到的任何东西都会导致这样的事情?

我应该从哪里开始看?在脚本内或iframe脚本内。两者都由我主持。它可能是iframe.setAttribute("allowtransparency", true);

1 个答案:

答案 0 :(得分: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"});
  })();