【发布时间】:2017-01-11 07:10:10
【问题描述】:
我们程序的用户有时必须从第三方网站下载数据库,这要求他们登录并指定参数以获取正确的数据库。我正在尝试将其合并到我们的程序中,这样用户就不必打开单独的浏览器,也让我们的程序可以在下载后访问数据库。
我已将 Web 浏览器嵌入到 Microsoft 的“使用 MFC 托管 WebBrowser 控件”中指定的对话框中,但它似乎无法正确执行某些网站的 javascript。使用 IE、Chrome 或 Firefox 浏览网站没有任何问题。但是,通过嵌入式浏览器浏览网站会产生多个脚本错误,其行为方式与独立浏览器完全不同,最终会阻止用户访问所需的数据库。我检查了网站源代码,似乎没有访问 javascript 中指定的某些默认值,也没有执行某些功能。我收到的一些错误消息是:
‘console’ is undefined ( the javascript is attempting to log messages to the console - I don’t think this has much effect on website content )
The value of the property ‘SelectSpectralModel’ is null or undefined, not a Function object
(SelectSpectralModel 是一个javascript函数,它决定出现哪些信息框,用户从中选择他们想要的内容)
我注意到在 Microsoft Visual Studio 调试模式下运行代码时,在尝试浏览网站时经常出现以下消息:
First-chance exception ….: Microsoft C++ exception: Js::JavascriptExceptionObject at memory location…..
我在调试中启用了异常以尝试定位错误,但是当代码中断时,我不知道错误实际发生在哪里。
我似乎无法在网上找到任何关于为什么会发生这种情况的信息。我找到了很多关于 IWebBrowser2 的信息,但没有任何与这个特定问题有关的信息。我还找到了一些关于有人提出的解决方法(针对不同的问题,但它似乎可能会有所帮助)使用 OLE 自动化运行 Internet Explorer 的实例,但此时,我必须做更多的阅读以了解这是如何完成的。
如果我能得到任何帮助来尝试解决这个问题,或者甚至是在整合解决方法方面的帮助,我将不胜感激。
【问题讨论】: