【问题标题】:Stop bug reports in HTA ( without admin privileges )停止 HTA 中的错误报告(没有管理员权限)
【发布时间】:2010-12-07 20:00:04
【问题描述】:

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

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

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

我在 Google 上搜索了很长时间,但从未找到解决方案,如果有任何有用的提示或解决方案,我将不胜感激。

谢谢, 罗特姆

【问题讨论】:

  • 你能发布有问题的代码吗?虽然我认为我明白您正在尝试做什么,但实际的页面代码会很有用。另外,“我遇到了错误”-具体有哪些错误?
  • 您要我附上哪个代码?我的代码不会产生这些错误,我从 HTA 进入的网站会产生这些错误。错误是: Javascript 错误.. 常规错误,就像任何 JavaScript 错误一样。 (就像我在网上找到的这个:1001bit.com/language_pack/v1.1/images/javascript-error-1.gif)再次感谢

标签: javascript html internet-explorer hta bug-reporting


【解决方案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 问题,但我没有可行的解决方案。)

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

【讨论】:

  • 嘿,谢谢你的想法。我很高兴看看你的代码。最后一个选项是最好的! “否则,最后一个选择是向每个站点的管理员发送一封电子邮件,并告诉他们修复他们该死的错误!!!!但我怀疑这个选项会为你成功 :D”:) 再次感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-12
  • 2013-12-31
  • 2012-03-01
  • 1970-01-01
相关资源
最近更新 更多