我有一段JavaScript从DOM中插入/删除iframe。在Chrome和FireFox中,一切都很花哨,但iframe不在IE中显示。下面的代码是创建和插入。使用Developer工具进行检查时,我可以看到iframe完全像我预期的那样是DOM的一部分。关于什么可能导致它不被显示的任何建议?
function getiFrame(target) {
var frame = document.getElementById(target);
if (null == frame) {
frame = document.createElement("iframe");
frame.setAttribute("width", "100%");
frame.setAttribute("height", "1000px");
//frame.setAttribute("frameborder", "0");
frame.setAttribute("id", target);
frame.setAttribute("name", target);
frame.setAttribute("src", "http://dmi.dk");
} else {
frame.src = "http://dmi.dk";
frame.style.visibility = "visible";
}
return frame;
}
var frame = getiFrame(target);
var row = document.getElementById(contentRowId);
for (var i = 0; row.childNodes.length > 0; i++) {
row.removeChild(row.childNodes[0]);
}
row.appendChild(frame);
编辑: 为了澄清我已经尝试直接设置属性(正如Tim Down建议的那样),这是我绝望尝试的结果。
此外,在检查DOM时,我得到一个完全有效的iframe标记:
<iframe propdescname="full" width="100%" height="1000" id="full" src="http://dmi.dk">
并检查它还表明它正确地读取并解析了src(http://dmi.dk)。我也可以检查该网站的DOM。
令我困惑的是,当一切似乎都有效时。什么可能阻止它被显示。
答案 0 :(得分:1)
有一个明显的问题:
frame = document.createElement("div");
应该是
frame = document.createElement("iframe");
此外,setAttribute
在IE中是不必要的,冗长且容易出错的。请改用DOM属性:
frame.width = "100%";
frame.height = 1000;
//frame.frameBorder = 0;
frame.id = target;
frame.name = target;
frame.src = "http://vrk.dk";
答案 1 :(得分:0)
Jim Coplien将此称为橡皮鸭图案。 “在你咨询橡皮鸭之前,你不能问xx”。在向某人寻求建议时,谁还没有解决自己的问题。
我正在编辑我的帖子,写iframe是在td,并认为我没有确定它实际上是。问题是我删除了td并将iframe插入到tr中,当动态完成时,IE偶然处理的不同于静态处理。
感谢您的聆听,扮演“橡皮鸭”的角色