IWebBrowser2似乎不执行javascript
IWebBrowser2 seemingly not executing javascript
我们程序的用户偶尔不得不从第三方网站下载数据库,这需要他们登录并指定参数才能获得正确的数据库。我正试图将此纳入我们的程序,以便用户不必打开单独的浏览器,也使我们的程序可以在下载时访问数据库。
我已经嵌入了一个web浏览器到一个对话框中指定在微软的"使用MFC托管一个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函数,它决定出现哪些信息框,用户从中选择他们想要的内容)
我注意到,在Microsoft Visual Studio调试模式下运行代码时,在尝试浏览网站时经常出现以下消息:
First-chance exception ….: Microsoft C++ exception: Js::JavascriptExceptionObject at memory location…..
我在调试中启用了Exceptions,试图定位错误,但是当代码中断时,我不知道错误实际发生在哪里。
我在网上找不到任何关于为什么会发生这种情况的信息。我找到了很多关于IWebBrowser2的信息,但是没有一个是关于这个特殊问题的。我还找到了一些关于使用OLE自动化来运行Internet Explorer实例的解决方案(针对不同的问题,但似乎可能有所帮助),但在这个时间点上,我必须做更多的阅读来弄清楚这是如何完成的。
任何帮助,我可以得到试图纠正这个问题,甚至一些帮助,在结合一个变通方法,我将非常感激。
microsoftembedded Web Browser控件以文档模式7运行。因此,如果您要使用Fiddler来查看User-agent-string,您将看到IE 7用户代理字符串。它也使用IE7的渲染和web标准。
要覆盖这个并让它使用IE11标准,你必须为你的可执行文件创建一个注册表项。
HKEY_LOCAL_MACHINE (or HKEY_CURRENT_USER)'SOFTWARE'Microsoft'Internet Explorer'Main'FeatureControl'FEATURE_BROWSER_EMULATION
contoso.exe = (DWORD) 00009000
请参阅MSDN文档中的
- 无法在通过jQuery的ajax加载的页面中执行javascript
- 在Safari执行javascript之前对其进行修改
- 如何在执行此特定onclick事件时执行JavaScript函数
- 如何在从浏览缓存加载页面时执行javascript
- 使用Rhino和ASE执行Javascript的区别
- 如何在加载完整页面后严格执行javascript代码
- 在动态加载的对话框中执行Javascript
- 在Sinatra中执行Javascript
- 通过AJAX加载页面并执行javascript和CSS
- 适用于多种浏览器的Selenium-需要能够执行javascript的webDriver
- 如何在seleniumwebdriver中执行javascript提示并等待接受输入
- 在window.open()生成的窗口中执行JavaScript
- AJAX成功回调-执行javascript时出现问题
- 通过指令在控制器中执行javascript函数
- 从React Native Android原生地执行JavaScript代码
- iframe未执行Javascript方法(PHP)
- 执行JavaScript代码,使用selenium webdriver或WatiN从控制台获取日志
- 通过web驱动程序异步执行Javascript
- 如何在长时间执行JavaScript期间显示微调器
- 点击困难时执行javascript函数