【问题标题】:Access denied in IE (same domain!)IE 中的访问被拒绝(同一个域!)
【发布时间】:2011-04-05 13:23:53
【问题描述】:

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

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

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

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

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

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

谢谢!

保罗

【问题讨论】:

  • 帧是否引用完全相同的域或不同的子域,即 www.example.com 和 foo.example.com?
  • @tvanfosson:或者更合理的是,www.example.com 和 example.com
  • 他声称他使用的是 IPAddress 而不是主机名,因此这不能解释问题,除非在一种情况下他使用 IP 而另一种情况下他使用主机名。
  • @Eric - 你可能遇到了一些问题,也许右侧的链接(出现问题的地方)使用的是域名而不是 IP 地址。

标签: internet-explorer frame access-denied


【解决方案1】:

我在尝试访问 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 中使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-14
    • 1970-01-01
    • 1970-01-01
    • 2012-03-13
    • 1970-01-01
    • 2014-09-12
    • 2012-05-15
    相关资源
    最近更新 更多