我创建了一个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);
?
答案 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"});
})();