――ActiveX控件调用网页JavaScript中的函数
2011-01-27 01:24
573 查看
本篇文档将介绍怎样在ActiveX控件中调用网页中的JavaScript函数。
在网上搜索许久,终于找到了一个简单易用的方法,这里先要给出来源代码的网址http://www.codeproject.com/com/JSCalls.asp。这是一个例子,可以调用网页中的JavaScript函数,但还不是我们想要的,它需要通过网页的源代码来初始化,而我们用.NET开发MFC的ActiveX控件时无法得到运行时网页的源代码,所以要通过其它方法来初始化。在狂GOOGLE和MSDN后,找到了怎样在MFC中得到IHTMLDocument2对象(具体是什么对象我也不是很清楚,但这个对象中存放了客户端网页里的很多信息)。另一方面,简单修改了上面网址中提供的类源代码,就可以运行了。
下面是具体的步骤:
1. 从http://www.codeproject.com/com/JSCalls.asp下载源代码(选择“download source”,你也可以下载示例去看一下,另就是下载需要免费注册)。下载解压后可以看到两个文件:WebPage.cpp、WebPage.h。我们打开WebPage.cpp修改其中
当然把这个函数修改完成后记得去修改WebPage.h的函数声明。
2. 将修改完的两个文件拷贝到ActiveX控件工程的文件夹下,并在ActiveX控件工程添加这两个文件,这时工程的类视图中就会出现一个新类CWebPage。这里给出添加的详细过程,对着.NET中解决方案管理中的“源代码”点右键选择“添加->添加现有项”,然后选择WebPage.cpp。同样,把WebPage.h添加到头文件里。
3. 做完上面的步骤,我们就可以使用CWebPage类了。在要调用网页JavaScript函数的地方用下面的代码,其中的jsFunc就是网页中的JavaScript函数。
所有步骤都已经列出,可以轻松的在ActiveX中调用网页中的JavaScript函数。当然,你们可以自己再去看看CWebPage类的成员函数,里面有得到JavaScript函数列表、调用需要参数的JavaScript函数等等。
在网上搜索许久,终于找到了一个简单易用的方法,这里先要给出来源代码的网址http://www.codeproject.com/com/JSCalls.asp。这是一个例子,可以调用网页中的JavaScript函数,但还不是我们想要的,它需要通过网页的源代码来初始化,而我们用.NET开发MFC的ActiveX控件时无法得到运行时网页的源代码,所以要通过其它方法来初始化。在狂GOOGLE和MSDN后,找到了怎样在MFC中得到IHTMLDocument2对象(具体是什么对象我也不是很清楚,但这个对象中存放了客户端网页里的很多信息)。另一方面,简单修改了上面网址中提供的类源代码,就可以运行了。
下面是具体的步骤:
1. 从http://www.codeproject.com/com/JSCalls.asp下载源代码(选择“download source”,你也可以下载示例去看一下,另就是下载需要免费注册)。下载解压后可以看到两个文件:WebPage.cpp、WebPage.h。我们打开WebPage.cpp修改其中
bool CWebPage::SetDocument(IDispatch* pDisp)函数,将其改为下面的代码: bool CWebPage::SetDocument(IHTMLDocument2* spDoc) { m_spDoc = NULL; HRESULT hr = spDoc->QueryInterface(IID_IHTMLDocument2,(void**)&m_spDoc); if(FAILED(hr)) { ShowError("Failed to get HTML document COM object"); return false; } return true; } |
2. 将修改完的两个文件拷贝到ActiveX控件工程的文件夹下,并在ActiveX控件工程添加这两个文件,这时工程的类视图中就会出现一个新类CWebPage。这里给出添加的详细过程,对着.NET中解决方案管理中的“源代码”点右键选择“添加->添加现有项”,然后选择WebPage.cpp。同样,把WebPage.h添加到头文件里。
3. 做完上面的步骤,我们就可以使用CWebPage类了。在要调用网页JavaScript函数的地方用下面的代码,其中的jsFunc就是网页中的JavaScript函数。
IOleClientSite *site; site = COleControl::GetClientSite(); CComPtr < IOleContainer > spContainer; site->GetContainer( &spContainer ); CComQIPtr < IHTMLDocument2 > spDoc = spContainer; CWebPage web; web.SetDocument2(spDoc); web.CallJScript("jsFunc"); |
相关文章推荐
- 网页中ActiveX控件与JavaScript交互 js调用ActiveX函数
- 网页中ActiveX控件与JavaScript交互 js调用ActiveX函数
- ActiveX控件调用网页JavaScript中的函数
- JavaScript基础 body onload 当网页加载完成时,才调用指定函数
- 网页中ActiveX控件与JavaScript交互 js调用ActiveX函数
- 网页制作之JavaScript部分3--事件及事件传输方式(函数调用 练习题 )重要---持续更新中
- JavaScript基础 body onload 当网页加载完成时,才调用指定函数
- 韩顺平_轻松搞定网页设计(html+css+javascript)_第26讲_js函数调用过程内存分析_js函数细节_学习笔记_源代码图解_PPT文档整理
- 网页中先全部解析JavaScript,(若有事件/入口函数)再调用
- JavaScript中七种函数调用方式及对应 this 的含义
- [转]javascript 调用后台函数
- asp.net 与 JavaScript 的函数相互调用
- JavaScript中的函数调用
- Firefox和IE,通过JavaScript调用iframe中页面的函数
- .Net前台javascript与后台c#函数相互调用
- CDHtmlDialog调用网页内部Javascript的两种方法
- math 是实例化过后的对象 然后调用属性 和函数 这个类存在去浏览器中,javascript解析器 去解释
- net中前台javascript与后台c#函数相互调用问题(转)
- 通过IE提供的window.external来再javascript中调用winform中的函数
- JavaScript高级之函数的四种调用形式