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

时间:2010-11-10 12:30:34

标签: javascript asp.net-ajax internet-explorer-8

我们在IE8中的客户应用程序中看到间歇性的JavaScript“拒绝访问”错误。某些用户偶尔会发生此错误,而其他用户从不会发生错误。

我可以通过跳过几个箍来可靠地重现我的浏览器上的错误:

  • 转到相关页面(请注意Internet区域,即使Web服务器是在我们的子网上运行的测试服务器)
  • 打开“Internet安全属性”(显示“某些设置由系统管理员管理”的消息)
  • 打开本地Intranet
  • 点击网站
  • 点击确定
  • 点击确定
  • 请注意,区域已更改为“本地Intranet”(即使我未进行更改)
  • 点击页面上的下拉列表
  • JavaScript错误“类型为null或不是对象”

调试到该错误显示它在“Sys.UI.DomEvent”函数中的Microsoft.Ajax.js中抛出,并且向上调用堆栈显示根错误发生在“Sys.UI.DomEvent.addHandler”中当它调用“Sys.UI.DomElement._getWindow(a).event”(a的类型为DispHTMLWindow2)时抛出异常:

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

其他用户在不进入网络安全特性的情况下会看到错误。

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

在没有任何iframe的网页中,什么会导致JavaScript“访问被拒绝”错误?

1 个答案:

答案 0 :(得分:1)

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

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