我们程序的用户偶尔需要从第三方网站下载数据库,需要他们登录并指定参数才能获得正确的数据库。我正在尝试将它合并到我们的程序中,这样用户就不必打开单独的浏览器,并且我们的程序可以在下载时访问数据库。
我在微软的“使用MFC托管WebBrowser控件”中指定的对话框中嵌入了一个web浏览器,但它显然没有正确地执行某些网站的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函数,它决定出现哪些信息框,用户从中选择他们想要的内容)
我注意到,在模式下运行代码时,在尝试浏览网站时经常会出现以下消息:
First-chance exception ….: Microsoft C++ exception: Js::JavascriptExceptionObject at memory location…..我在调试中启用了异常,试图定位错误,但当代码中断时,我不知道错误实际发生在何处。
我似乎无法在网上找到任何关于为什么会发生这种情况的信息。我已经找到了很多关于IWebBrowser2的信息,但是没有任何与这个特定问题相关的信息。我还找到了一些解决办法(针对不同的问题,但似乎很有帮助),使用OLE自动化运行Internet Explorer的实例,但此时,我需要做更多的阅读,才能弄清楚这是如何实现的。
任何我可以得到的帮助,试图补救这个问题,甚至在融入一个解决办法的一些帮助,将非常感谢。
发布于 2016-12-11 23:14:57
Microsoft嵌入式Web浏览器控件以7的文档模式运行。因此,如果您要使用Fiddler来查看用户代理字符串,您将看到IE7用户代理字符串。它还使用了IE7的渲染和web标准。
要覆盖它并让它使用IE11标准,您必须创建一个特定于您的可执行文件的注册表条目。
HKEY_LOCAL_MACHINE (or HKEY_CURRENT_USER)\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION
contoso.exe = (DWORD) 00009000请参阅这方面的MSDN文档
https://stackoverflow.com/questions/40160333
复制相似问题