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. java中substring和indexof() 和lastindexof()

    java中substring和indexof() 和lastindexof() str=str.substring(int beginIndex);截取掉str从首字母起长度为beginIndex的字 ...

  2. JavaScript 学习笔记-- ES6学习(一)介绍以及Babel的使用

    本文摘自阮一峰老师的<ECMAScript 6入门>,原文地址:http://es6.ruanyifeng.com/#docs/intro ECMAScript 6 是一个泛指,含义是5. ...

  3. nginx 显示discuz页面

    我也不知道我题目表述的对不对.我也是刚学习. 安装nginx 显示discuz的界面.我看了好几次视频,也没发现哪的问题.就是一直出现502的错误代码 我又重新查了几次.觉得需要注意一下几点: 1,关 ...

  4. linux 下串口的配置

    串口最基本的设置包括波特率 校验位 和停止位. 主要是设置个结构体的成员值, #include <termios.h> struct termio { unsigned short c_i ...

  5. 使用reinterpret_cast的危险

    关键字: c++ cast // Cast.cpp : Defines the entry point for the console application. // #include "s ...

  6. Qt之json解析

    Jsoner::Jsoner(QObject *parent) : QObject(parent){    QJsonObject json;    json.insert("loginna ...

  7. 使用ajax和history.pushState无刷新改变页面URL onpopstate(转)

    Javascript代码 var htmlData1 = $.ajax(    {    url: "/getXXXResponse",    async: false }).re ...

  8. VS2010升级VS2012必备(MVC4 WebPage2.0 Razor2.0资料汇集)

    刚把项目升级到2012,发现发生了很多变化,以下是最近看过的网站和资料汇集,供需要者参考. 本文在最近一个月可能会不断更新. Razor2.0 新特性介绍: 介绍1:http://vibrantcod ...

  9. WebForm中TreeView的使用

    protected void Page_Load(object sender, EventArgs e)        {            DatabaseBind();            ...

  10. handoff了解

    iOS8推出一个新特性,叫做Handoff.Handoff中文含义为换手(把接力棒传给下一个人),可以在一台Mac和iOS设备上开始工作,中途将工作交换到另一个Mac或iOS设备中进行.这个在iOS8 ...