我不认为这是可能的,但今天早上我讨厌IE6两倍。访问IFrame的contentWindow.document会导致IE6上的访问被拒绝
请不要误解我为什么,但我会尽力解释我们想要达到的目标。 我们有2个应用程序在运行,比如说APP1 & APP2,它们都在相同域。 APP1包含一个托管在APP2上的JavaScript文件。这个JS文件将:
- 创建(使用使用document.createElement)
- 设置的IFrame到APP2的根(其中产生一些HTML)源一个IFrame;
- 一个div添加到APP1 的身体
- 阅读iFrame的内容(所以APP2的生成HTML)
- 集这个内容作为DIV的innerHTML(3)
所以最后在APP1中,我们有一个标题,其内容由APP2生成,而屏幕上没有IFrame。
问题在于步骤4;这对于IE6以外的所有浏览器都可以正常工作(这可能是Web开发中最常用的语句吗?)。 尝试访问iframe的contentWindow.document时出现JS错误:“访问被拒绝”。我不是专家,但据我了解,如果两个应用程序不在同一个域中,但它们是(dev.echnet/APP1 & dev.echnet/APP2),则会得到此错误。
这是我使用用于上述步骤的代码(掏出未如果不是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用户(现在是一个可行的任务),所以我可以跳过这个任务:-)。
不知道如果这能帮助:http://stackoverflow.com/questions/151362 –