2010/8/1更新:
实际项目中使用发现如果页面大量使用了 ajax,这个解决方案还存在很错问题,工作起来非常不稳定。慎用!!!
下载地址:
http://download.csdn.net/source/1913671
我们目前的项目程序普遍使用
Delphi
客户端内嵌
Internet Explorer
的方式实现,在开发过程中,由于不同的页面经常需要做一些特殊的处理,从而经常涉及到网页和客户端交互的过程。
在以往的项目中,我们大都通过在
Delphi
中捕获浏览器某个对象的事件的方式来解决,随着需要交互的地方越来越多,客户端的代码也由于增加了大量的代码变得难以维护,同时这些代码页不具有通用性,一旦换到另一个项目,绝大部分的事件处理代码随之废弃。而从网页向客户端传递数据我们以前大都采用
Cookie
的方式,这种方式一来由于
Cookie
本身存在不安全性,另外最大的缺点就是无法实时与客户端进行通信。
基于以上原因,封装了一个 VCL,通过简单的方式,实现
Web page
和客户端之间的双向实时通信。此VCL 具有以下特点:
1.
最少代码,应用程序只需在窗口中放入相应的
VCL
控件,调用相应的方法发送命令,
如果需要接收命令,征订相应的事件就可以了
2.
VCL
会自动在网页上生成相应的函数,网页如需向应用程序发送命令,只要调用相应的函数就可以了
3.
具体的命令和命令的参数由网页和应用程序之间自由约定,
VCL
本身不做任何限制
原理非常简单,有兴趣的自己看一下代码,总共也就200行。
使用方法
1.
首先在
Delphi
中安装
TWebInteractive VCL
安装后在
Delphi
面板会生成
iFLYTEK VCL
一栏,目前只有一个
WebInteractive
组件。
2.
在
Form
设计面板上添加
TWebInteractive
对象,并设置属性和事件
此处
WebBrowser
为
TEmbeddedWB
对象,不是
Delphi
自带的
TWebBrowser
。
3.
调用方法,在
Delphi
中如需要向网页发送命令,可通过
TWebInteractive
的
SendClientCommand
方法,示例:
wbntrctv1.SendClientCommand('call', 'test(''param1'',
''param2'')');
目前仅支持
call
命令,用来调用网页中的
javascript
函数,对应的参数就是具体函数的调用表达式。
4.
在网页中如需要想客户端发送命令,可直接调用
SendClientCommand(
命令,参数
)
,具体命令及参数有客户端在
OnGetClientCommand
中进行处理。
转载请注明出处:http://blog.csdn.net/jh_zzz