delphi下webbrowser的应用
查找操作tagName为input的对象var
i:Integer;
myole:oleVariant;
begin
myole := wb1.Document;
for i := 0 to myole.all.length - 1 do
begin
if myole.all.item(i).tagName = 'INPUT' then
begin mmo1.Lines.Add(myole.all.item(i).name); mmo1.Lines.Add(myole.all.item(i).value);
end;
end; end;
WebBrowser1.GoHome; //到浏览器默认主页
WebBrowser1.Refresh; //刷新
WebBrowser1.GoBack; //后退
WebBrowser1.GoForward; //前进
WebBrowser1.Navigate('...'); //打开指定页面
WebBrowser1.Navigate('about:blank'); //打开空页面
--------------------------------------------------------------------------------
//打开空页面, 并写入... WebBrowser1.Navigate('about:<head><title>标题></title><body>页面内容</body>');
--------------------------------------------------------------------------------
//读取网页脚本中的变量: procedure TForm1.Button1Click(Sender: TObject);
var
s: string;
i: Integer;
begin
s := WebBrowser1.OleObject.document.Script.str;
i := WebBrowser1.OleObject.document.Script.num;
ShowMessage(s); //Hello
ShowMessage(IntToStr(i)); //99 //也可以这样读:
s := WebBrowser1.OleObject.document.parentWindow.str;
i := WebBrowser1.OleObject.document.parentWindow.num;
ShowMessage(s); //Hello
ShowMessage(IntToStr(i)); //99
end;
假如网页中有这样的语句:
<script>
var
str = "Hello";
i = 99;
</script> -------------------------------------------------------------------------------- //调用网页脚本中的函数: procedure TForm1.Button1Click(Sender: TObject);
begin
WebBrowser1.OleObject.document.parentWindow.MB(); //HTML-Js //如需指定脚本语言, 需要:
WebBrowser1.OleObject.document.parentWindow.execScript('MB()','JavaScript'); //HTML-Js
end;
假如有这样的脚本:
<script>
function MB(){
alert('HTML-Js');
}
</script> -------------------------------------------------------------------------------- //判断网页及内部框架网页是否全部下载完毕 procedure TForm1.WebBrowser1DocumentComplete(ASender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
begin
if WebBrowser1.Application = pDisp then
begin
Text := '网页下载完毕!';
end;
end; -------------------------------------------------------------------------------- //改变背景色或背景图片:
WebBrowser1.OleObject.document.body.bgcolor := '#FF0000';
WebBrowser1.OleObject.document.body.background := '...图片地址';
--------------------------------------------------------------------------------
//操作有 ID 标签的对象:
var
s: string;
begin
s := WebBrowser1.OleObject.document.getElementByID('span1').innerText;
ShowMessage(s); //这是 span1 标签中的内容 //或者:
s := WebBrowser1.OleObject.document.parentWindow.span1.innerText;
ShowMessage(s); //这是 span1 标签中的内容 //隐藏它:
WebBrowser1.OleObject.document.parentWindow.span1.style.display := 'none';
end;
假如网页中有这样的内容:
<span id=span1>这是 span1 标签中的内容</span> -------------------------------------------------------------------------------- //获取网页源代码
var
s: string;
begin
s := WebBrowser1.OleObject.document.body.innerHTML; //body内的所有代码
s := WebBrowser1.OleObject.document.body.outerHTML; //body内的所有代码, 包含body标签
s := WebBrowser1.OleObject.document.documentElement.innerHTML; //html内的所有代码
end;
--------------------------------------------------------------------------------
//WebBrowser 中的右键菜单 //先要添加ApplicationEvents1,指定其Message事件 //屏蔽右键菜单
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean);
begin
with Msg do
begin
if not IsChild(WebBrowser1.Handle, hWnd) then Exit;
Handled := (message = WM_RBUTTONDOWN) or (message = WM_RBUTTONUP) or (message = WM_CONTEXTMENU);
end;
end; //替换右键菜单
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean);
var mPoint: TPoint;
begin
if IsChild(WebBrowser1.Handle, Msg.Hwnd) and
((Msg.Message = WM_RBUTTONDOWN) or (Msg.Message = WM_RBUTTONUP)) then
begin
GetCursorPos(mPoint); //得到光标位置
PopupMenu1.Popup(mPoint.X, mPoint.Y); //弹出popupmenu1的菜单
Handled:=True;
end;
end;
--------------------------------------------------------------------------------
//新页面写入
begin
WebBrowser1.Navigate('about:blank');
WebBrowser1.OleObject.Document.Writeln('ok');
end;
单个frames的输入
var
o : Olevariant;
begin
o := WebBrowser.OleObject.document.all.item('LoginUserID',0); //找到登录用户名的输入框
o.value := 'TEST';
o := WebBrowser.oleobject.document.all.item('LoginPassword',0); //找到登录密码的输入框
o.value := 'TEST'
WebBrowser.oleobject.document.Forms.Item(0, 0).submit; //第一个表单提交
{
o :=WebBrowser.oleobject.document.all.item('Login',0); //或者用指定表单名称提交
o.Click; //点击操作,对其它对象也可同样操作
}
end;
多个frames的输入,FrameIndex为Frame的序号
var
o : Olevariant;
begin
//找到登录用户名的输入框
o := WebBrowser.oleobject.document.documentelement.document.frames.item(FrameIndex).document.all.item('LoginUserID',0);
o.value := 'TEST';
//找到登录密码的输入框
o := WebBrowser.oleobject.document.documentelement.document.frames.item(FramIndex).document.all.item('LoginPassword',0);
o.value := 'TEST'
//第一个表单提交
WebBrowser.oleobject.document.documentelement.document.frames.item(FramIndex).document.Forms.Item(0, 0).submit;
{
//或者用指定表单名称提交
o :=WebBrowser.oleobject.document.documentelement.document.frames.item(FramIndex)..document.all.item('Login',0);
o.Click; //点击操作,对其它对象也可同样操作
}
end;
-----------------------------------------------------------------------------------------------------
document属性
{ihtmldocument2 方法:}
write //写入
writeln //写入并换行
open //打开一个流,以收集 document.write 或 document.writeln 的输出
close //关闭并输出用 document.open 方法打开的流
clear //清空文档中所有元素, 可能暂时不支持
querycommandsupported //是否支持指定命令
querycommandenabled //指定命令是否有效
querycommandstate //是否设置了指定命令
querycommandindeterm //指定命令是否处于不确定状态
querycommandtext //命令
querycommandvalue //命令值
execcommand //执行命令
execcommandshowhelp //命令帮助信息
createelement //建立元素
elementfrompoint //指定坐标下的元素
createstylesheet //创建一个样式表 {ihtmldocument2 属性:}
all //所有 html 元素的集合
images //所有 image 对象的集合
applets //所有 applet 对象的集合
links //所有 link 对象的集合
forms //所有 form 对象的集合
anchors //所有 anchor 对象的集合
scripts //所有 script 对象的集合
frames //所有 frame 对象的集合, 这应该和 window.frames 是一样的
embeds //所有 embed 对象的集合
plugins //所有 plugin 对象的集合
stylesheets //样式表集合
title //网页标题
body //body 对象
activeelement //当前具有输入焦点的元素
designmode //设计模式, 可选值: inherit on off
selection //当前选择
readystate //页面读取状态: uninitialized、loading、loaded、interactive、completed
linkcolor //链接的颜色
alinkcolor //活动链接的颜色
vlinkcolor //已访问过的链接的颜色
bgcolor //背景颜色
fgcolor //文本颜色
referrer //返回载入当前页面的页面的 url
location //同 window.location
lastmodified //返回文档最后修改的日期和时间
url //返回当前文档的 url
domain //返回域名
cookie //返回文档相关的 cookie
expando //可设置与获取的布尔值, 是否允许扩展
charset //获取文档的字符集名称
defaultcharset //获取浏览器默认的字符集名称
mimetype //文档类型
filesize //文档大小, 单位字节, 用字符串表示
filecreateddate //文档建立时间 ???
filemodifieddate //文档修改时间 ???
fileupdateddate //文档更新时间 ???
security //文档安全
protocol //传输协议
nameprop //文件标题, 好像同 title
parentwindow //父窗口
script // {ihtmldocument2 事件:}
onhelp //用 f1 获取帮助时
on*** //单击时
ondbl*** //双击时
on***down //鼠标点下时
on***up //鼠标抬起时
on***move //鼠标移动时
on***over //鼠标进入时
on***out //鼠标离开时
onkeypress //按键时
onkeyup //键按住时
onkeydown //键抬起时
onreadystatechange //状态改变时
onrowexit //当前数据源的数据将要发生变化时
onrowenter //当前数据源的数据发生变化并且有新的数据时
ondragstart //开始拖动时
onselectstart //开始选择时
onbeforeupdate //更新前
onafterupdate //更新后
onerrorupdate //更新错误时 {ihtmldocument3 方法:}
recalc //重新获取文档中的全部动态属性
releasecapture //释放文档中对象的鼠标捕捉 {ihtmldocument3 属性:}
createtextnode //建立文本
attachevent //绑定事件
detachevent //取消事件绑定
createdocumentfragment//创建新文档
getelementsbyname //返回带有指定 name 的对象集合
getelementbyid //返回指定 id 的第一个对象的引用
getelementsbytagname //返回指定标签的对象集合
documentelement //获取文档根部节点, 也就是 html 节点
uniqueid //获取对象的唯一标识符
dir //
parentdocument //
enabledownload
baseurl //基础地址
delphi下webbrowser的应用的更多相关文章
- delphi中webbrowser的用法
WebBrowser1.GoHome; //到浏览器默认主页 WebBrowser1.Refresh; //刷新 WebBrowser1.GoBack; //后退 WebBrowser1.GoForw ...
- delphi的webBrowser操作HTML研究
测试例子: 外网电脑D:\TEST\delphiTest\webbrowsetest 参考文档: delphi 操作WebBrowser 元素值 http://hi.baidu.com/kinglik ...
- Delphi下使用Oracle Access控件组下TOraSession控件链接
Delphi下使用Oracle Access控件组下TOraSession控件链接数据库,使用 orsn1.Options.Direct:=true; orsn1.Server:=IP:Port: ...
- DELPHI下的SOCK编程(转)
DELPHI下的SOCK编程 本文是写给公司新来的程序员的,算是一点培训的教材.本文不会涉及太多的编程细节,只是简单讲解在DELPHI下进行Winsock编程最好了解的知识. 题外话:我认为 ...
- DELPHI下读取与设置系统时钟
在DELPHI下读取与设置系统时钟 很多朋友都想在自己的程序中显示系统时间 这在DELPHI中十分容易 利用DateToStr(Date)及TimeToStr(Time)函数即可实现. 二者的函数原型 ...
- 终于可以发布Delphi下收点OSGI精髓皮毛而设计的插件框架WisdomPluginFramework
这是一个Delphi实现的插件框架,我耗费了相当相当相当多的精力来设计她,虽然仅闪着点我微薄智慧的光芒,但我还是决定用Wisdom来命名她,也因它是我绝无仅有的,在完成1年多后回头来看仍能相当满意的作 ...
- DELPHI下API简述(1800个API)
DELPHI下API简述 http://zero.cnbct.org/show.asp?id=144 auxGetDevCaps API 获取附属设备容量 auxGetNumDevs API 返回附属 ...
- Delphi下的RTTI函数大全
http://ljz9425.blog.163.com/blog/static/369148572008111635253858/ Delphi下的RTTI(下) 2008-12-16 15:52:5 ...
- 在Delphi下使用迅雷APlayer组件进行免注册开发
之前都是用的delphi下的dspack进行的视频开发,这个组件其实很好用,就是找解码器麻烦点,而且还得在客户的计算机上使用RegSvr32.exe也注册解码器,要不有可能播放不了. 结果在查找合适的 ...
随机推荐
- 【English】口头禅
1. Absolutely! 毫无疑问! 2. Adorable! 可爱极了! 3. Amazing! 太神奇了! 4. Anytime! 随时吩咐! 5. Almost! 差不多了! 6. Awfu ...
- 基于ShaderX5的顶点动画
关于顶点动画,ShaderX5里有篇专门来讲,在虚幻3引擎里也有一个更加丰富的实现.使用了一个Pivot Painter的3dmax脚本.其实自己灵活用vertex color可以避开使用Pivot ...
- WP8数据存储--独立存储设置
<Grid x:Name="LayoutRoot" Background="Transparent"> <Grid.RowDefinition ...
- lucene 转义含有查询关键词的字符的
http://www.oschina.net/question/1092_560 Escaping Special Characters Lucene支持转义查询中的特殊字符,以下是Lucene的特殊 ...
- JPA 使用报Named query not found错误
具体错误如下: Caused by: java.lang.IllegalArgumentException: Named query not found: select emp from TBicEm ...
- 轻量级代码生成器-OnlyCoder 第一篇
程序猿利器:代码生成器,使用代码生成器已经好几年了,增删改查各种生成,从UI到DATA层均生成过.之前有使用过动软的,T4模板等.... T4生成实体还是没有问题的,但是生成MVC视图就有点烦杂了, ...
- 20181011_matplotlib
import numpy as np import pandas as pd import matplotlib.pyplot as plt df=pd.DataFrame(np.random.ran ...
- Service#onStartCommand返回值解析
Service#onStartCommand返回值解析 Service类有个生命周期方法叫onStartCommand,每次启动服务(startService)都会回调此方法.此方法的原型例如以下: ...
- springboot学习(六) springboot开发web应用
1.简介 Spring Boot非常适合开发web应用程序.你可以使用内嵌的Tomcat,Jetty或Undertow轻轻松松地创建一个HTTP服务器.大多数的web应用都使用spring-boot- ...
- 转:关于安卓多线程while(true)方法占用CPU高的原因及其解决方法
由于项目需要用到安卓多线程操作,结果开了四条线程,下载到平板一直很卡,CPU占用率暴涨.于是开始查找原因,发现是线程run()方法里的while(true)导致的, 下图是为解决时开启一条while( ...