我们程序的用户偶尔必须从第三方网站下载数据库,要求他们登录并指定参数以获取正确的数据库。我正在尝试将其合并到我们的程序中,以便用户不必打开单独的浏览器,以便我们的程序可以在下载时访问数据库。
我已经将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的实例,但是在这个时候,我必须做更多的阅读,以弄清楚如何做到这一点。
我可以帮助我解决这个问题或者甚至在合并解决方案方面提供一些帮助。非常感谢。
答案 0 :(得分:1)
Microsoft嵌入式Web浏览器控件以7的文档模式运行。因此,如果您使用Fiddler查看User-agent-string,您将看到IE 7用户代理字符串。它也使用IE7的渲染和Web标准。
要覆盖它并使其使用IE11标准,您必须创建特定于您的可执行文件的注册表项。
onDrawerSlide
请参阅此
上的MSDN documentation