1、基本操作
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:='';
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中WEBBrowser网页html相互调用(一)的更多相关文章

  1. delphi中EmbeddedWB网页html相互调用(二)

    我们可以通过控件 EmbeddedWB_D5-D2010_Version_14.69.1 来响应html事件,还可以自定义html响应哪些html元素. 控件下载 点击下载 里面有demos文件夹大家 ...

  2. Delphi中WebBrowser控件打开部分网站报"Invalid floating point operation”解决

    Delphi中WebBrowser控件打开部分网站报"Invalid floating point operation”解决 EmbeddedWBWebBrowserDelphi  最近用E ...

  3. Delphi 中的DLL 封装和调用对象技术(刘艺,有截图)

    Delphi 中的DLL 封装和调用对象技术本文刊登2003 年10 月份出版的Dr.Dobb's 软件研发第3 期刘 艺摘 要DLL 是一种应用最为广泛的动态链接技术但是由于在DLL 中封装和调用对 ...

  4. vue中的父子组件相互调用

    vue中的父子组件相互调用: 1.vue子组件调用父组件方法:子组件:this.$emit('xx'); 父组件:定义yy方法,并在引用子组件时传参,如@xx="yy" 2.vue ...

  5. java 中 this 和 super 说明及在构造器中super()和this()相互调用执行顺序

    this this 表示当前对象 使用上细分的话,this有 this. 和this()的使用情况 ,下面我们开始细撸 this . 使用场景一: 在成员方法中,this.变量名 指带当前对象的变量, ...

  6. delphi中webbrowser的用法

    WebBrowser1.GoHome; //到浏览器默认主页 WebBrowser1.Refresh; //刷新 WebBrowser1.GoBack; //后退 WebBrowser1.GoForw ...

  7. delphi中WebBrowser的parent改变时变成空白问题的解决(覆盖CreateWnd和DestroyWnd)

    这段时间在做一个delphi界面打开网页的功能,且此网页所在窗口可完整显示,可缩小到另一个窗口的panel上显示 可是在改变网页所在窗口时,WebBrowser控件变成了空白 上网google了半天, ...

  8. Delphi中WebBrowser拦截网页Alert对话框消息(转)

    interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, O ...

  9. delphi中Webbrowser疑难问题集锦<转>

    1.获得网页中变量值      htm中<script> var currID=123</script>      程序中可以这么调用 id := Form1.WebBrows ...

随机推荐

  1. A题笔记(11)

    No.1508  代码:https://code.csdn.net/snippets/192058 考察点:①char型字符转换成对应的 ASKII 的编码 可以通过这样对 string 的每一个字符 ...

  2. ios 消息跳转处理

    一.消息转发流程 当向Objective-C对象发送一个消息,但runtime在当前类及父类中找不到此selector对应的方法时,消息转发(message forwarding)流程开始启动. 动态 ...

  3. C# Flash 图片上传案例(结合网上腾讯头像上传Flash插件)

    之前遇到过很多次要上传类似头像图片这种功能需求,这次是要求弄一个flash插件上传图片 感谢主,一个偶然机会在网上找到了一个很好的腾讯头像修改的flash插件:插件下载 这个功能采用Ajax访问支持, ...

  4. Apache + Tomcat + mod_jk实现集群服务及session共享

    实现效果:用apache 分发请求到tomcat中的对应的项目 原理:

  5. iOS imagePicker使用方法,方便使用!三步轻松搞定!

    自己总结的修改头像的方法,只为方便自己查询使用!转发 步骤:1.遵守代理协议 <UIImagePickerControllerDelegate,UINavigationControllerDel ...

  6. 05_Excel操作_02_模拟Web环境的User列表导出

    [思路解释] 在正式上到WebProject之前,准备模拟一下WebProject后台的导出流程. 主要都写在ExcelService层,在Excel的Service层,首先要获得UserList,即 ...

  7. 插入排序之python实现源码

    def insert_sort(old): for i in range(1, len(old)): for j in range(i, 0, -1): if(old[j] < old[j-1] ...

  8. ASP.NET数据绑定控件

    数据绑定控件简介 数据绑定分为:数据源 和 数据绑定控件 两部分,数据绑定控件通过数据源来获得数据,通过数据源来隔离数据提供者和数据使用者,数据源有:SqlDataSource,AccessDataS ...

  9. starling 中的 EventDispatcher 和 Flash中原生的 EventDispatcher

    starling 比较早之前就有开始解了,但只到最近参与一个用starling 做为框架的手游项目才真正做为一程来使用它. 项目也是刚开始搭建,在这做些笔记. 在写一个管理类时, 遇到 starlin ...

  10. Linux错误码的含义

    C Name Value Description EPERM 1 Operation not permitted ENOENT 2 No such file or directory ESRCH 3 ...