代码之家  ›  专栏  ›  技术社区  ›  brien

JavaScript“访问被拒绝”错误-没有iframe

  •  1
  • brien  · 技术社区  · 14 年前

    我们看到IE8中的一个客户应用程序出现间歇性JavaScript访问被拒绝错误。对于某些用户,该错误偶尔发生,而对于其他用户,则从不发生。

    • 转到有问题的页面(请注意Internet区域,即使web服务器是在我们的子网上运行的测试服务器)
    • 打开Internet安全属性(显示的消息表明某些设置由系统管理员管理)
    • 点击站点
    • 单击“确定”
    • 单击“确定”
    • 注意,该区域已更改为本地intranet(即使我没有进行更改)
    • JavaScript错误类型为空或不是对象

    对该错误的调试显示它是在Sys.UI.DomEvent函数中的Microsoft.Ajax.js中抛出的,向上遍历调用堆栈显示,当调用Sys.UI.DomEvent.addHandler时,根错误出现在Sys.UI.DomElement.\u getWindow(a).event(a是DispHTMLWindow2类型)中,引发异常:

    name: TypeError
    description: “Access is denied.”
    message: “Access is denied.”
    number: -2147024891
    

    其他用户在不进入Internet安全属性的情况下看到错误。

    我对访问所做的所有研究都被拒绝错误指向了使用来自不同来源的iframe的问题,因此我从所讨论的页面中删除了所有iframe,但我仍然看到错误。

    1 回复  |  直到 14 年前
        1
  •  1
  •   brien    14 年前

    结果发现,这是因为当用户在一个广泛使用JavaScript的特定页面上时,某些东西会导致Internet安全区域偶尔切换。当IE中的页面在加载后更改安全区域时,它无法执行访问页面上控件的父窗口的JavaScript。

    仍然不确定是什么原因导致页面更改了安全区域,但这似乎只发生在我们通过IP而不是主机名(通常显示为本地Intranet区域)引用站点时。