0

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

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

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

我在框架的加载中这样做。现在是真正奇怪的部分:当我第一次加载框架集时,它就可以工作了!但是当我单击框架右侧的链接时,我得到了错误。更奇怪的是:在框架的左侧,我放了一个按钮,它会触发完全相同的代码——然后它就可以工作了!

当然,我认为该事件可能触发得太早了;在右框架完成加载之前。但即使我等待 10 秒,10 秒后 - 繁荣,我得到错误....

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

谢谢!

保罗

4

1 回答 1

0

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

// 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 中遇到错误,因为“窗口”不是 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。

于 2014-01-29T19:07:06.813 回答