Javascript Can';无法访问IE中的iframe内容

Javascript Can';无法访问IE中的iframe内容,javascript,internet-explorer,iframe,Javascript,Internet Explorer,Iframe,我正在构建一个CMS应用程序,我现在正在为IE调试。但发生的事情我无法理解 首先,我有一个带有页面内容的div。我提取div的内容,用javascript创建一个iFrame并将其附加到div中。这是为了制作所见即所得编辑器。然后,当我想将内容添加到iFrame时,问题就开始了。IE由于某种原因无法访问iFrame的身体。我可以通知iFrame的文档,它给我[object document]或[object HTMLDocument],但当我随后通知主体时,我会得到null 我使用此函数获取作为

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

首先,我有一个带有页面内容的div。我提取div的内容,用javascript创建一个iFrame并将其附加到div中。这是为了制作所见即所得编辑器。然后,当我想将内容添加到iFrame时,问题就开始了。IE由于某种原因无法访问iFrame的身体。我可以通知iFrame的文档,它给我[object document]或[object 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,添加一个div,其中包含所见即所得函数、iFrame和textarea,以便最终提交表单

我正在测试IE8和IE9。最奇怪的是,当我在IE 8中第一次调用iframedoc之前发出警报时,我突然得到了尸体

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

我正在测试IE8和IE9。最奇怪的是,当我在IE 8中第一次调用iframedoc之前发出警报时,我突然得到了尸体

这听起来似乎对浏览器来说速度太快了——当您尝试处理iframe时,iframe可能还没有完全加载完毕,因此添加一个警报可以为它提供所需的额外时间。尝试使用iframe元素上的
onload
事件延迟部分代码

我正在测试IE8和IE9。最奇怪的是,当我在IE 8中第一次调用iframedoc之前发出警报时,我突然得到了尸体


这听起来似乎对浏览器来说速度太快了——当您尝试处理iframe时,iframe可能还没有完全加载完毕,因此添加一个警报可以为它提供所需的额外时间。尝试使用iframe元素上的
onload
事件延迟部分代码。

最终,我的解决方案是使用间隔函数检查iframe的主体是否可用


但随着这些错误的消失,我发现在IE8中,为iFrame打开设计模式删除了它的所有内容。所以我最终只使用了contenteditable div..

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


但随着这些错误的消失,我发现在IE8中,为iFrame打开设计模式删除了它的所有内容。因此,我最终只使用了contenteditable div…

这似乎确实是这样!将代码添加到iFrame的onload事件中表明,首先添加iFrame(使用一个循环设置具有相同类的所有div),然后才真正加载该循环。下一个问题是,我无法找出触发函数的元素的id,这一点非常重要。。调用“this”只会打开IE8中的窗口。你知道怎么做吗?我正在使用以下方法添加onload事件:函数addOnload(element,funct){if(element.attachEvent)return element.attachEvent('onload',funct);else return element.addEventListener('load',funct,false);}这似乎确实是这样!将代码添加到iFrame的onload事件中表明,首先添加iFrame(使用一个循环设置具有相同类的所有div),然后才真正加载该循环。下一个问题是,我无法找出触发函数的元素的id,这一点非常重要。。调用“this”只会打开IE8中的窗口。你知道怎么做吗?我正在使用以下函数添加onload事件:函数addOnload(element,funct){if(element.attachEvent)返回元素.attachEvent('onload',funct);else返回元素.addEventListener('load',funct,false);}