无法访问IE中的iframe内容

时间:2012-05-21 01:03:50

标签: javascript internet-explorer iframe

我正在构建一个CMS应用程序,我正在为IE调试。但事情发生我无法理解。

首先,我有一个包含页面内容的div。我提取div的内容,并使用javascript我创建一个iFrame并将其附加到div。这是为了制作WYSIWYG编辑器。然后,当我想将内容添加到iFrame时,问题就开始了。由于某种原因,IE无法访问iFrame的正文。我可以提醒iFrame的文档,它给我[对象文档]或[对象HTMLDocument],但是当我然后提醒身体我得到null。

我使用此函数将文档作为javascript对象的一部分来获取:

iframedoc: function(aID) {
    if (document.getElementById(aID).contentDocument){
        return document.getElementById(aID).contentDocument;
    } else {
        var iFrame = document.getElementById(aID);
        return iFrame.contentWindow.document;
    }
},

这是我第一次称呼它的地方:

tas[i].innerHTML = "";
tas[i].appendChild(ta_edit_functions);
tas[i].appendChild(ta_edit);
tas[i].appendChild(ta_result);
alert(ta.iframedoc(ta_edit_id));
ta.iframedoc(ta_edit_id).body.innerHTML = ta_edit_content;
ta.iframedoc(ta_edit_id).designMode = 'on';

这里我清空div,附加一个包含WYSIWYG函数的div,iFrame和textarea,最终提交表单。

我正在IE 8和9中进行测试。最奇怪的是,当我在IE 8中首次调用iframedoc之前发出警报时,我突然得到了身体。

如果有人能够至少指出我正确的方向,我将非常感激。我真的不知道发生了什么。

2 个答案:

答案 0 :(得分:4)

  

我正在IE 8和9中进行测试。最奇怪的是,当我在IE 8中首次调用iframedoc之前发出警报时,我突然得到了身体。

听起来好像你的浏览器速度太快了 - 当你尝试搞乱它时,iframe可能还没有完全加载,所以添加一个警报会给它带来额外的时间。尝试使用iframe元素上的onload事件推迟部分代码。

答案 1 :(得分:0)

最终我的解决方案是使用区间函数检查iFrame的主体是否可用。

但随着这些错误消失,我发现在IE8中打开iFrame的designmode会删除它的所有内容。所以我最终只使用了一个有意义的div ..