0

我正在使用带框架的 HTA,左框架控制主框架并在其中显示页面(如导航面板),例如:您按下左侧的“google”链接,它会在主窗口中打开它。(这不是 HTA 的主要目的,但我只是简化它来解释)

现在的问题是当我试图打开带有错误报告的网页时 - HTA 不断通知我该页面的错误,有时该页面甚至无法正常运行。(错误报告与我创建的页面无关!)相同的页面在 IE 中完美运行。

重要的是在标题中提到,我或任何 HTA 的用户在系统中没有管理员权限。

我用谷歌搜索了很长时间,但从未找到解决方案,我将非常感谢任何有用的提示或解决问题的方法。

谢谢, 罗特姆

4

1 回答 1

1

你有几个选择来解决这个问题。最好的选择是在 Internet Explorer 中禁用“显示有关每个脚本错误的通知”设置。由于您正在运行 HTA,因此您可以通过编程方式修改 HKEY_CURRENT_USER 注册表设置(或者只需手动执行一次。)

第二种方法肯定更像是一种 hack,但是当我在 IE 进行选项卡式浏览之前在 HTA 中创建选项卡式浏览器时,我自己解决了这个问题。而不是导航到 iframe 中的 URL,而是希望 AJAX 请求内容,预先设置一个脚本块,将 window.onerror 设置为您选择的函数。然后将整个内容注入到 iframe 中。这种方法将吞下任何错误,并让您可以根据需要报告它们。

除了注入 onerror 脚本之外,您还需要对锚点进行一些预解析,以便后续点击通过 ajax 注入处理程序进行路由。这被证明是相当复杂的,因为您实际上是开始编写自己的浏览器。我仍然拥有该项目的源代码,因此我会将其发布到 bitbucket 存储库并让您探索我的方法。

否则最后的选择是向每个站点的管理员发送一封电子邮件,并告诉他们修复他们该死的错误!!!!但我怀疑这个选项会为你成功:D

编辑:

加载旧项目后,我发现该解决方案不像以前那样可行。x-frame-options 标头指令现在阻止 google.com 从 IE8 开始甚至加载到 iframe 中。由于某种原因,window.onerror 陷阱没有捕获 iframe 中的错误(实际上可能是嵌套的 iframe 问题,但我没有可行的解决方案。)

但是我仍然可以选择检查错误对话框的“不再显示此消息”选项。这使错误对话框停止为我报告问题,并且不需要管理员权限。

于 2012-05-17T21:33:16.673 回答