访问IFrame的contentWindow.document给出“拒绝访问”的IE6

问题描述 投票:1回答:1

我不认为这是可能的,但我今天早上痛恨IE6的两倍多,现在则。

请不要再问我关于为什么,但我会尽量解释什么,我们正在努力实现的。我们有2级正在运行的应用程序,比方说APP1 APP2和,他们两人都是在同一个域。 APP1是包括上APP2托管的JavaScript文件。这个js文件将:

  1. 创建一个IFrame(通过使用document.createElement)
  2. iFrame的源设置为APP2(其中产生一些HTML)的根;
  3. 一个div添加到APP1的身体
  4. 阅读iframe的内容(所以APP2的生成的HTML)
  5. 设置此内容作为DIV的innerHTML(3)

所以在APP1我们到底在内容被APP2产生,而不存在在屏幕上一个IFrame头。

问题在于,在步骤4;这是工作的罚款除IE6的所有浏览器(难道这是在web开发中最常用的句子?)。试图访问的iframe contentWindow.document当我得到一个JS错误:“访问被拒绝”。我不是专家,但据我所知这个错误,如果这两个应用并不在同一个域,你会得到,但他们(dev.echnet / APP1和dev.echnet / APP 2)。

这是我使用用于上述步骤的代码(掏出未如果不执行IE6东西):(1),(2)及(3):

var elIf;
$().ready(function()
{
    elIf = document.createElement('<iframe name="uhframename">');
    elIf.setAttribute('id','idUhFrame');
    document.body.appendChild(elIf);

var uhDiv = document.createElement('div');
document.body.appendChild(uhDiv);

elIf.src='dev.echnet/APP1?nocache='+Math.random();
getText();

}

(4)

function getText() {
        var sContent = "";
        if (elIf.contentWindow.document.body) { // access denied on elIf.contentWindow.document
           ...
        }
}

我GOOGLE了很多,尝试了多种可能性,我发现(也SO),但他们都不来解决这个问题。

我也试图通过设置它的源本该IFrame明确设置的域:

“JavaScript的:(函数(){document.open(); document.domain的= \ 'dev.echnet \'; document.close();})()”

但我不能完全肯定这是否有任何影响,因为我设置源到别的东西了几步进一步。无论如何,因为它是不应该的问题同一个域?

希望一些帮助或某人击落所有IE6用户(一个可行的任务现在),所以我可以:-)跳过此任务。

javascript internet-explorer-6 cross-domain access-denied
1个回答
0
投票

有的用它工作在这里的另一个问题后,我想出了这个解决方案。

似乎.document并不总是必要的。

http://jsfiddle.net/sTkVR/4/

我使用的是Chrome和它不与.document工作,但就像用了它的魅力

© www.soinside.com 2019 - 2024. All rights reserved.