delphi中WEBBrowser网页html相互调用(一)
2014-01-12 22:51
399 查看
1、基本操作
1.1、激活
1.2、写HTML代码
1.3、获得HTML文本
2、中级操作
2.1、获得其中HTML元素的值
2.2、改写其中HTML元素的值
3、高级操作
3.1、触发其中HTML元素的事件
3.2、让其中的元素执行webbrowser之外的delphi代码
本来,这有很复杂的解决办法,但那部分属于ATL的知识比较难掌握,因此绕了一下:
让那些需要执行delphi的HTML元素,调用一个函数叫做triggerExEvent,参数是HTML元素的名称,然后是若干参数。
triggerExEvent是javascript函数,有不确定个参数,但第一个肯定是表示元素的名称。 triggerExEvent将参数组成字符串,然后前面冠以"#OnTriggerExEvent:",作为url,然后导航。
在webbrowser的onNavigator2事件里,判断url中是否包含"#OnTriggerExEvent:",如果包含怎作如下处理:
a、cancel这次导航;b、将"#OnTriggerExEvent:"之后的信息截取,作为参数传递给webbrowser的新增一个事件OnTriggerExEvent事件,其参数有两个:1、控件名称;2、一个字符串参数。
这样,用户可以在OnTriggerExEvent事件里处理HTML的点击等事件了
例如,我为webbrowser派生新类,叫做webbrowserEx,它有一个事件叫做OnTriggerExEvent
有个js文件包含这样的函数:
在HTML文本里可以这样写:
这样,点击网页里的按钮时,会触发delphi写的代码,这些代码根据传递过来的参数,再进行调用其它合适的事件,也可以让webbrowserEx自动寻找合适的事件来触发,只有寻找不到时才去找JS的方法。
1.1、激活
var doc,url:Olevariant ; begin url:='about:blank' ;//或者一个有实际意义的url WebBrowser1.Navigate2(url);//这样就激活了! end;
1.2、写HTML代码
var doc:Olevariant ; s:string; begin doc:=WebBrowser1.Document; doc.clear;//清楚缘由内容,以便写新内容 doc.write('<html>'); //其它代码 doc.write('</html>'); doc.close;//这样就生效了! end;
1.3、获得HTML文本
var doc:Olevariant ; s:string; begin doc:=WebBrowser1.Document; s:=doc.documentElement.outerHTML;//s里就是HTML文本了 //处理s就行了 end;
2、中级操作
2.1、获得其中HTML元素的值
var doc:olevariant; s:string; begin doc:=WebBrowser1.Document; s:=doc.all.btn.value; end;
2.2、改写其中HTML元素的值
var doc:olevariant; begin doc:=WebBrowser1.Document; doc.all.btn.value:='123123'; end;
3、高级操作
3.1、触发其中HTML元素的事件
var doc:olevariant; begin doc:=WebBrowser1.Document; doc.all.btn.onclick; end;
3.2、让其中的元素执行webbrowser之外的delphi代码
本来,这有很复杂的解决办法,但那部分属于ATL的知识比较难掌握,因此绕了一下:
让那些需要执行delphi的HTML元素,调用一个函数叫做triggerExEvent,参数是HTML元素的名称,然后是若干参数。
triggerExEvent是javascript函数,有不确定个参数,但第一个肯定是表示元素的名称。 triggerExEvent将参数组成字符串,然后前面冠以"#OnTriggerExEvent:",作为url,然后导航。
在webbrowser的onNavigator2事件里,判断url中是否包含"#OnTriggerExEvent:",如果包含怎作如下处理:
a、cancel这次导航;b、将"#OnTriggerExEvent:"之后的信息截取,作为参数传递给webbrowser的新增一个事件OnTriggerExEvent事件,其参数有两个:1、控件名称;2、一个字符串参数。
这样,用户可以在OnTriggerExEvent事件里处理HTML的点击等事件了
例如,我为webbrowser派生新类,叫做webbrowserEx,它有一个事件叫做OnTriggerExEvent
有个js文件包含这样的函数:
function triggerExEvent(cmpnt_id,event_nm,optionstr) {url='#triggerExEvent:id='; url=url+cmpnt_id+';eventnm='+event_nm; if(optionstr) url=url+';params=optionstr'; location=url;}
在HTML文本里可以这样写:
<input type="button" name="Submit" value="按钮" onClick="triggerExEvent('Submit','click',null);">
这样,点击网页里的按钮时,会触发delphi写的代码,这些代码根据传递过来的参数,再进行调用其它合适的事件,也可以让webbrowserEx自动寻找合适的事件来触发,只有寻找不到时才去找JS的方法。
相关文章推荐
- delphi中EmbeddedWB网页html相互调用(二)
- 1.C#开发winform 开发调运检疫离线制证功能。调用cLodop打印控件(NVelocity模块,生成HTML(包含cLodop打印控件的js),使用WebBrowser,展现网页)总结
- delphi中WEBBrowser网页JS函数调用delphi函数
- delphi中WEBBrowser网页JS函数调用delphi函数
- delphi中WEBBrowser网页JS函数调用delphi函数
- delphi中WEBBrowser网页JS函数调用delphi函数
- [Html&JS] 一个网页上,不同的子父窗口iframe之间如何相互调用
- delphi中EmbeddedWB网页html相互调用
- 通过Html网页调用本地安卓(android)app
- vb.net webbrowser 网页调用winform 中的函数
- QT和网页中的JavaScript函数相互调用的实现
- delphi 用webbrowser控件登录和显示网页
- Androi与html中的JavaScript之间方法相互调用
- 安卓与html混合开发之原生与js相互调用
- 如何用Delphi调用IE打开网页
- 通过Html网页调用本地安卓(android)app程序代码
- webbrowser 调用javascript函数的使用一例,环境c#+html
- Delphi_判断Webbrowser打开的网页组件是否存在?
- html网页调用本地exe程序的实现方法