【问题标题】:DHTML, iFrame and IEDHTML、iFrame 和 IE
【发布时间】:2011-04-13 14:45:00
【问题描述】:

我有一段 JavaScript 可以从 DOM 中插入/删除 iframe。 Chrome 和 FireFox 中的一切都是花花公子,但 iframe 不显示在 IE 中。下面的代码是创建和插入。使用开发人员工具进行检查时,我可以看到 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。

所以让我感到困惑的是,当一切似乎都正常时。什么可能会阻止它显示。

【问题讨论】:

    标签: javascript html internet-explorer dhtml


    【解决方案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";
    

    【讨论】:

    • 我的错字 div/iframe 并没有什么不同。我已经更新了问题以更清楚。谢谢指出
    【解决方案2】:

    Jim Coplien 将此称为橡皮鸭模式。 “在你咨询过橡皮鸭之前,你不能问 xx”。在向某人寻求建议时,谁还没有解决自己的问题。

    我正在编辑我的帖子,写到 iframe 位于 td 中,并开始认为我不确定它是否真的存在。问题原来是我删除了 td 并将 iframe 插入到 tr 中,IE 在动态完成时与静态完成时的处理方式不同。

    感谢收听,扮演“橡皮鸭”的角色

    【讨论】:

      猜你喜欢
      • 2015-10-16
      • 2011-09-25
      • 1970-01-01
      • 1970-01-01
      • 2013-06-20
      • 2010-10-07
      • 1970-01-01
      • 2016-03-24
      • 2011-06-29
      相关资源
      最近更新 更多