抑制IE8中的脚本错误(C ++)

时间:2011-10-04 09:52:02

标签: c++ internet-explorer error-handling iwebbrowser2

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

我在IWebBrowser2中的确切位置?

由于

5 个答案:

答案 0 :(得分:6)

只需使用put_Silent方法。

m_pWebBrowser->put_Silent(VARIANT_TRUE);

答案 1 :(得分: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);

答案 2 :(得分:1)

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

例如,如果使用CDHtmlDialog,请将其放在OnInitDialog()

m_pBrowserApp->put_Silent(VARIANT_TRUE);

并在LoadFromResource()来电 之前将其设为

要小心,因为这会抑制比JavaScript错误更多的消息。 (考虑SSL证书通知。)

答案 3 :(得分:0)

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

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

在此处查看更多信息:

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

以下是处理错误的方法:

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

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

  1. 修复您的JS错误
  2. 将所有JS代码放在try / catch块中。然后你不会得到JS对话框,但你需要自己处理错误。

答案 4 :(得分:0)

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

要点:

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

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