我有一个本机(Windows)应用程序,具有嵌入式Web浏览器 . 目前我正在从后端调用javascript函数(c / c#) . 但是,如果禁用了javascript,则会失败,我想提供一个回退机制 . 有没有办法确定javascript是否被禁用?
在IE Web Control中,您只需强制启用JavaScript即可 . 请参阅以下接口,主机必须实现这些接口:
IDocHostUIHandler
IDocHostShowUI
IInternetSecurityManager
IServiceProvider
另一种方法是让您的HTML页面查询window.external对象并在其上调用一个方法,该方法在您的主机中实现,该方法将标志设置为true . 不被调用意味着JavaScript没有被执行 .
哇,在mfc下使用网页浏览器真的很痛苦,你可以通过获取IInternetSecurityManager来检查,并检查是否启用了当前策略执行javascript,如果用户选择在他的IE上禁用javascript,则需要覆盖注册表中的值 .
HRESULT hr = CoCreateInstance(CLSID_InternetSecurityManager, NULL, CLSCTX_INPROC_SERVER,IID_IInternetSecurityManager, (void**)&pSecurityMgr); int policy = URLPOLICY_ALLOW; hr = pSecurityMgr->ProcessUrlAction(L"http://www.google.com", URLACTION_SCRIPT_RUN, (BYTE*)&policy, sizeof(policy), NULL, 0, PUAF_TRUSTED, 0);
如果hr = S_FALSE,则禁用javascript执行...
2 回答
在IE Web Control中,您只需强制启用JavaScript即可 . 请参阅以下接口,主机必须实现这些接口:
IDocHostUIHandler
IDocHostShowUI
IInternetSecurityManager
IServiceProvider
另一种方法是让您的HTML页面查询window.external对象并在其上调用一个方法,该方法在您的主机中实现,该方法将标志设置为true . 不被调用意味着JavaScript没有被执行 .
哇,在mfc下使用网页浏览器真的很痛苦,你可以通过获取IInternetSecurityManager来检查,并检查是否启用了当前策略执行javascript,如果用户选择在他的IE上禁用javascript,则需要覆盖注册表中的值 .
如果hr = S_FALSE,则禁用javascript执行...