4

我想防止 IE 显示 JS 错误对话框,我读到可以通过设置 ScriptErrorsSuppressed = true 来完成。

我在 IWebBrowser2 中究竟在哪里设置它?

谢谢

4

5 回答 5

6

只需使用put_Silent方法。

m_pWebBrowser->put_Silent(VARIANT_TRUE);
于 2011-12-22T20:45:36.447 回答
1

改变HKEY_CURRENT_USERHKEY_LOCAL_MACHINE路径。

Software\\Microsoft\\Internet Explorer\\Main


RegSetValueEx (hKey, LPCSTR("Disable Script Debugger"), 0, REG_SZ, (BYTE*) "yes", 3);

RegSetValueEx (hKey, LPCSTR("DisableScriptDebuggerIE"), 0, REG_SZ, (BYTE*) "yes", 3);
于 2014-01-28T08:24:21.437 回答
1

如前所述,使用该put_Silent()方法打开或关闭错误报告。

例如,如果使用 a CDHtmlDialog,请将其放入您的OnInitDialog():

m_pBrowserApp->put_Silent(VARIANT_TRUE);

并将其放在通话之前LoadFromResource()

不过要小心,因为这会抑制更多消息,而不仅仅是 JavaScript 错误。(想想 SSL 证书通知。)

于 2014-11-11T16:33:06.717 回答
0

您正在阅读的文档是指如果您在自己的应用程序中嵌入 IE HTML 呈现窗格可以做什么。它们允许您更改该窗格的行为。

如果您已经这样做了,那么您可以使用 COM 从组件中查询 IWebBrowser2 接口。

在这里查看更多:

http://support.microsoft.com/kb/196340

以下是您处理错误的方式:

http://support.microsoft.com/kb/261003

我怀疑这不是你想要做的,你只是在制作一个网络应用程序。在这种情况下,您需要

  1. 修复你的 JS 错误
  2. 将所有 JS 代码放在 try/catch 块中。然后你不会得到 JS 对话框,但你需要自己处理错误。
于 2011-10-04T11:17:36.157 回答
0

快速简便的方法是使用全局状态来解决本地问题并按照此处所述修改注册表(尽管Raymond 不赞成这样做)。这基本上为当前登录的用户完全停用了脚本错误。

概括:

  • 注册表项:HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main
  • 值名称:禁用脚本调试器
  • 数据类型:(REG_SZ字符串值)
  • 价值数据:

正如Lou已经指出的,更复杂的解决方案是实现IOleCommandTarget

于 2011-10-18T13:40:49.527 回答