我正在使用带有框架的HTA,左框架控制主框架并在其中显示页面(例如导航面板),例如:您按下左侧的“google”链接,然后在主要框架上打开它窗口。 (这不是HTA的主要目的,但我只是简化它来解释)
现在的问题是当我尝试打开带有错误报告的网页时 - HTA会不断通知我页面的错误,有时页面甚至无法正常运行。 (错误报告不是我创建的页面!) 相同的页面在IE中完美运行。
重要的是要在标题中提及我或任何HTA的用户在系统中没有管理员权限。
我用谷歌搜索了很长时间,但从来没有找到解决方案,我真的很感激任何有用的提示或问题的解决方案。
谢谢, ROTEM
答案 0 :(得分:1)
你有几个选择来解决这个问题。最好的选择是在Internet Explorer中禁用“显示有关每个脚本错误的通知”设置。由于您运行的是HTA,因此可以通过编程方式修改HKEY_CURRENT_USER注册表设置(或者只需手动执行一次。)
第二种方法肯定更像是一种黑客攻击,但是当我在IE浏览器进行标签浏览之前,我在HTA中创建一个标签式浏览器时,我就是这样解决问题的。你不想导航到iframe中的URL,而是希望AJAX请求内容,在前面添加一个脚本块,将window.onerror设置为你选择的功能。然后将整个内容注入iframe。这种方法将吞下任何错误,并允许您根据需要报告它们。
除了注入onerror脚本之外,您还需要对锚点进行一些预解析,以便后续点击通过ajax注入处理程序进行路由。这被证明是非常复杂的,因为你基本上开始编写自己的浏览器。我仍然有项目的源代码,所以我将它发布到bitbucket repo,让你探索我的方法。
否则,最后一个选项是向每个站点的管理员发送一封电子邮件,并告诉他们修复他们的friggin错误!但是我怀疑这个选项能否适合你:D
编辑:
加载旧项目后,我发现该解决方案不像以前那样可行。 x-frame-options标头指令现在阻止google.com甚至在IE8中加载iframe。由于某种原因,window.onerror陷阱没有捕获iframe中的错误(实际上可能是嵌套的iframe问题,但我没有可行的解决方案。)
但我仍然可以选择错误对话框中的“不再显示此消息”选项。这使得错误对话框停止为我报告问题,并且它不需要管理员权限。