IE中访问被拒绝(同域!)

时间:2011-04-05 13:23:53

标签: internet-explorer frame access-denied

我知道IE的跨站点脚本问题,但这是来自同一个服务器/域。 (我实际上是通过IP地址访问服务器......但我认为这不是问题吗?)

问题是,我正在尝试使用jquery.translate翻译应用程序。在FF(惊喜!)这就像一个魅力。但在IE中,我遇到了可怕的“拒绝访问”错误。这是我的电话:

$(top.frames["Content"].document).translate('english');

我在帧的上传中执行此操作。现在对于非常奇怪的部分:当我第一次加载框架集时它可以工作!但是当我点击框架右边的链接时,我得到了错误。 更奇怪的是:在框架的左侧部分,我放了一个按钮,它将激活完全相同的代码 - 然后它就可以了!

当然,我认为这个事件可能会很快发生;在右框架完成加载之前。但即使我等了10秒钟,经过10秒 - 繁荣,我也得到错误......

我这里的头发用完了.. :-) 有人知道吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

我在尝试访问iframe中的函数时遇到了同样的错误,这两个文档都来自同一个域。我访问iframe的窗口对象及其功能的技术是这样的:

// if id for the iframe element is 'context', first make sure 
// it's accessible as a property of the main window object
if(! window.context ) window.context = window.frames[0] || null;
if( window.context === null ) alert("The Context screen is not available");

// grab a function from the iframe window and assign to var
var fadeLoader = window.context.fadeLoader; // this is an error in IE

...所以在我甚至可以尝试调用该函数之前,我得到一个引用它的错误。在F12控制台中玩,这是有用的:

// grab a function from the iframe window and assign to var
var fadeLoader = window.context.window.fadeLoader; 
// now I can call the function
fadeLoader();

...但是现在,我在Firefox中收到错误,因为'window'不是FF中iframe元素的有效属性。相反,FF使用(正确)contentWindow。所以,要使这项工作全面发挥作用:

if(! window.context ) window.context = window.frames[0] || null;
if(! window.context.window ) window.context.window = window.context.contentWindow;
var fadeLoader = window.context.window.fadeLoader;
fadeLoader();

似乎可以在IE,FireFox,Chrome和Safari中使用。