知道如何在我的 WinForms C# 应用程序中使用托管控件时收到有关脚本错误的通知WebBrowser
OLECMDID_SHOWSCRIPTERROR
,我目前以这种方式成功地做到了这一点:
private void handleError(mshtml.IHTMLDocument2 htmlDocument)
{
var htmlWindow = htmlDocument.parentWindow;
var htmlEventObject = htmlWindow.@event as mshtml.IHTMLEventObj2;
_lineNumber = (int)htmlEventObject.getAttribute(@"errorLine");
_characterNumber = (int)htmlEventObject.getAttribute(@"errorCharacter");
_errorCode = (int)htmlEventObject.getAttribute(@"errorCode");
_errorMessage = htmlEventObject.getAttribute(@"errorMessage") as string;
_url = htmlEventObject.getAttribute(@"errorUrl") as string;
}
这按预期工作。
我目前无法解决的是获取 JavaScript 调用堆栈。
我在上面的示例中尝试了几件事:
_callStack = htmlEventObject.getAttribute(@"stack") as string;
_callStack = htmlEventObject.getAttribute(@"errorStack") as string;
_callStack = htmlEventObject.getAttribute(@"stackTrace") as string;
...
所有这些都返回一个空/NULL字符串。
我是否不确定是否可以检索到这些信息,我的问题仍然是:
如何从托管 Internet Explorer Web 浏览器控件的应用程序中获取 JavaScript 错误的调用堆栈?