现在的位置: 首页.NET技术 > 正文
IE8 提示 KB927917, IE6 IE7 提示操作已中止的解决办法
关键词:KB927917 操作已中止 swfupload ┊ 来源: 原创收藏

今天出现了一个奇怪的问题,自己用.NET写的一个网站报错了IE8 提示 KB927917, IE6 IE7 提示操作已中止。网站用了一个Flash的上传控件swfupload,并且所有的JS代码和引用都放放在应用了母版页的子页中的<asp:Content>中。这还不算完,这样访问不报错,这个页面又被放到左右frameset的分栏中,这就不行了。而且根据错误的特征码KB927917定位了一下,在官方找到了原因和解决办法。应该和一个IE的漏洞有关,才会报错。最后把js文件的引用放到母版页的<title>中就没事了。以下是官方的说法:

出现此问题的原因子容器 HTML 元素包含试图修改子容器的父容器元素的脚本。 脚本试图使用 innerHTML 方法或 appendChild 方法修改父容器元素。

是例如如果 DIV 元素是在 BODY 元素中的子容器,并在 DIV 元素中的一个 SCRIPT 块尝试修改 DIV 元素的父容器的 BODY 元素,可能会出现此问题。

有关此错误的详细信息,请访问下面的 Microsoft Web 站点:
已中止的操作发生了变化?
http://blogs.msdn.com/ie/archive/2008/04/23/what-happened-to-operation-aborted.aspx (http://blogs.msdn.com/ie/archive/2008/04/23/what-happened-to-operation-aborted.aspx)
请注意 如果在受信任的站点区域中的网页发送到 Internet 区域中的页的 HTTP 302 重定向用户还可能收到此错误消息。 使用受保护模式,Internet Explorer 7 和 Windows Vista 或更高版本的操作系统上运行的更高版本使从在中等完整性运行到运行出于安全原因的低完整性的网页的网页的重定向。 在这些情况下,用户可能会收到一条类似"操作已中止"错误消息。 要解决此问题,确保 HTTP 302 重定向的同一区域中的页。 是例如确保在重定向从一个受信任的站点区域页面到另一受信任的站点区域页。 或者,确保将源和重定向的目标不涉及更改 Internet Explorer 保护的模式状态。
 

解决办法 1

要变通解决此问题,请只修改的块关闭容器,或者,修改仅脚本的立即的容器元素编写脚本。 为此,使用一个占位符,可以关闭目标容器,或可以将脚本块移动到您要修改的容器。
 

解决办法 2

您可以关闭 Internet Explorer 中友好 HTTP 错误消息。 此替代方法仍然允许出现该错误消息。 但是,Internet Explorer 不会移动不从页错误发生后。 此替代方法只适用于 Internet Explorer 6。

要这样做,请按下列步骤操作:
  1. 工具 菜单上单击 Internet 选项
  2. 高级 选项卡上单击以清除 显示友好 HTTP 错误信息 复选框,在 浏览 部分下,然后单击 确定
  3. 关闭浏览器。
 

解决办法 3

您可以禁用活动脚本在 Internet Explorer 中。 通过阻止运行的任何脚本,此替代方法避免错误条件。 但此解决办法的缺点,则是页执行未导致前面的成功动态更改到页的显示更改的。 此外,同一安全区域中的所有页没有启用该功能之前重新启用活动脚本。

Internet Explorer 7,使用下面的方法。

方法 1

将单个的站点添加到受限制的站点,默认情况下禁用脚本。

请注意 此方法影响不仅但还许多其他方面包括禁用或设置为该区域的提示的 ActiveX 控件的在页的脚本。

要这样做,请按下列步骤操作:
  1. 工具 菜单上单击 Internet 选项
  2. 安全 选项卡上选择 受限站点 区域。
  3. 单击 网站 ,单击 添加 ,然后单击 确定

方法 2

活动脚本提示时设置或禁用您查看该网站将加载该区域的受影响的站点。

请注意 此设置会影响该区域中的所有网站并且应设置回以启用当您浏览其他站点。 确定站点加载下通过查看在右下角,状态栏中的哪些区域。
  1. 工具 菜单上单击 Internet 选项
  2. 安全 选项卡上选择该站点加载在区域。
  3. 向下滚动到 脚本 部分然后设置为 禁用的阻止脚本 提示的提示用户运行,或不运行脚本 的活动脚本。
  4. 单击 确定
请注意 方法 1 和方法 2 的 Internet Explorer 7 可能会使网站不可用。 如果在相同站点上经常出现的问题,只禁用脚本。 如果您更改 脚本 设置,确保重您置设置为 已启用 之后,以便该区域中的其他站点不受影响。 如果您不能禁用脚本,使用解决办法 1,或将升级到 Internet Explorer 8。
 

示例 1

在本例中, DIV 元素是一个子容器元素。 SCRIPT 块在 DIV 元素内的尝试修改 BODY 元素。 BODY 元素是关闭的父容器的 DIV 元素。
<html>
  <body>
      <div>
                  <script type="text/Javascript">
                    document.body.innerHTML+="sample text";
                  </script>
      </div>
  </body>
</html>
要解决此问题,请使用以下方法之一。

方法 1: 修改父元素

SCRIPT 块移动到 BODY 元素的范围。 这是脚本试图修改的容器。
<html>
  <body>
      <div>
      </div>
      <script type="text/Javascript">
           document.body.innerHTML+="sample text";
      </script>
  </body>
</html>

方法 2: 修改一个已关闭的容器元素

作为在父容器元素中的占位符中添加一个已关闭的容器。 然后,修改与脚本块新的已关闭的容器。
<html>
  <body>
      <div id="targetContainer">
      </div>
      <div>
      <script type="text/Javascript">
           document.getElementById('targetContainer').innerHTML+="sample text";
      </script>
      </div>
  </body>
</html>
 

示例 2

在此示例,深层嵌套的 TD 容器元素内的一个 SCRIPT 块会尝试通过 appendChild 方法中修改父容器 BODY 元素。
<html>
  <body>
      <table>
                <tr>
                         <td>
                                 <script type="text/Javascript">
                                                  var d = document.createElement('div');
                                                  document.body.appendChild(d);
                                 </script>
                         </td>
                 </tr>
      </table>
  </body>
 </html>
要解决此问题,请插入 BODY 元素中移动 SCRIPT
<html>
  <body>
      <table>
                <tr>
                        <td>
                       </td>
                 </tr>
      </table>
      <script type="text/Javascript">
                                  var d = document.createElement('div');
                                  document.body.appendChild(d);
                     </script>
  </body>
 </html>
相关文章
    暂无相关文章
本文由 jack 发布于 3283天 5小时 33分钟前,目前已有 19066 人浏览
欢迎大家转载分享,请注明来源及链接;商业媒体转载请获得授权,谢谢合作!
 

添加评论