- 浏览: 5176949 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
silence19841230:
先拿走看看
SpringBoot2.0开发WebSocket应用完整示例 -
wallimn:
masuweng 写道发下源码下载地址吧!三个相关文件打了个包 ...
SpringBoot2.0开发WebSocket应用完整示例 -
masuweng:
发下源码下载地址吧!
SpringBoot2.0开发WebSocket应用完整示例 -
masuweng:
SpringBoot2.0开发WebSocket应用完整示例 -
wallimn:
水淼火 写道你好,我使用以后,图标不显示,应该怎么引用呢,谢谢 ...
前端框架iviewui使用示例之菜单+多Tab页布局
htm中<script> var currID=123</script>
程序中可以这么调用 id := Form1.WebBrowser1.OleObject.Document.script.currID
值得说明的是,变量可以是javascript定义的,也可以是vbscript定义的,如果Webbrowser1中找不到该变量,调用会触发一个异常事件,即变量currID不存在
2.执行网页中的函数
tmp := 'currID = getNextID(currID)'+#13#10;
Form1.WebBrowser1.OleObject.Document.parentWindow.execScript(tmp,'JavaScript');
调用函数的方法就是execScript接口,同样,如果函数不存在,或者运行错误也会触发脚本错误异常
3.设置网页背景
背景图片 WebBrowser1.OleObject.Document.body.background := 'http://seelearn.com/bg.gif
' 背景颜色 WebBrowser1.OleObject.Document.body.bgcolor := '#eeeeee'
4.调用网页中已知对象
src := WebBrowser1.OleObject.Document.getElementByID('img1').src 该方法其实就是javascript中的 getElementByID
5.获取页面中所有的frame
使用DHTML。
frames:=wb.OleObject.document.frames;
for i:=0 to frames.length do
memo1.lines.Add(frames[i].document.body.innerHTML);
6.BorderStyle=bsNone后Webbrowser会被重新初始化
这是一个让人很意外的一个问题,Delphi在窗口控件的控制方面做得非常好,很少出现这种BUG
根据分析,出现这个现象有很多情况 改变FormStyle也会出现 ; 如果 webbrowser.parent
由panel1改到panel2.也会导致webbrowser重新初始化。
7.直接向Webbrowser中写入html代码,不需要Navigate到实际存在的文件
var
StrStream:TStringStream;
SetNoteStr: string; begin SetNoteStr :='<body bgcolor=222222 align=center><br><p align=center><font size=+2 color=#FFFFFF>扬帆博客 http://wesohon.com</font></p>';
SetNoteStr :=SetNoteStr+'<br><p align=center><font size=+2 color=#FFFFFF>点击左边按钮可查看对应图片</font></p>';
StrStream:=TStringStream.Create(SetNoteStr);
WebBrowser1.Navigate('about:blank');
try
StrStream.Position:=0;
( WebBrowser1.Document as IPersistStreamInit).Load(TStreamadapter.Create(StrStream));
finally
StrStream.Free;
end;
8.前进,后退,刷新
self.WebBrowser1.GoBack
self.WebBrowser1.GoForward
self.WebBrowser1.Refresh
9.捕捉NewWindow2事件,即新开窗口事件
procedure TForm1.WebBrowser1NewWindow2(Sender: TObject;
var ppDisp: IDispatch; var Cancel: WordBool);
var
NewWindow: TForm2;
begin
//exit;
NewWindow:= TForm2.Create(nil);
NewWindow.Show;
ppDisp:= NewWindow.Webbrowser1.DefaultDispatch;
end; 值得一题的是该方法不能获得新开窗口的URL,退一步的方法只能是等到在新的Webbrowser中触发BeforeNavigate2事件判断了
10.网页中存在iframe时判断页面是否下载结束
procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;const pDisp: IDispatch; var URL: OleVariant);
begin
if WebBrowser1.Application = pDisp then showmessage('页面已全部下载完毕')end;
说明一下,每个iframe下载完毕都会触发DocumentComplete事件,所以一个页面在真正下载完毕前可能被触发多次
11. 获取网页中图片//使用DOM模型,什么都能读下来
uses MSHtml, ActiveX;
var
html_doc: IHTMLDocument2;
doc_all : IHtmlElementCollection;
vI : IHtmlImgElement;
begin
html_doc := WebBrowser1.Document as IHTMLDocument2;
doc_all := html_doc.images;
for I := 0 to doc_all.length - 1 do
begin
vI := doc_all.item(I, EMPTYPARAM) as IHtmlImgElement;
//读取vI.src
Memo1.Lines.Add(vI.src);
end;
end;12. 下面函数获得ISomeControl接口var
html_doc: IHTMLDocument2;
doc_all : IHtmlElementCollection;
vI : IHtmlElement;
vD : IDispatch;
begin
html_doc := WebBrowser1.Document as IHTMLDocument2;
doc_all := html_doc.all;
for I := 0 to doc_all.length - 1 do
begin
vI := doc_all.item(I, EMPTYPARAM) as IHtmlElement;
if vI.tagName='OBJECT' then
begin
//读取Classid
Memo1.Lines.Add((vI as IHtmlObjectElement).classid);
//读取包容的对象接口
vD := (vI as IHtmlObjectElement).object_;
...
end;
end;
end;
程序中可以这么调用 id := Form1.WebBrowser1.OleObject.Document.script.currID
值得说明的是,变量可以是javascript定义的,也可以是vbscript定义的,如果Webbrowser1中找不到该变量,调用会触发一个异常事件,即变量currID不存在
2.执行网页中的函数
tmp := 'currID = getNextID(currID)'+#13#10;
Form1.WebBrowser1.OleObject.Document.parentWindow.execScript(tmp,'JavaScript');
调用函数的方法就是execScript接口,同样,如果函数不存在,或者运行错误也会触发脚本错误异常
3.设置网页背景
背景图片 WebBrowser1.OleObject.Document.body.background := 'http://seelearn.com/bg.gif
' 背景颜色 WebBrowser1.OleObject.Document.body.bgcolor := '#eeeeee'
4.调用网页中已知对象
src := WebBrowser1.OleObject.Document.getElementByID('img1').src 该方法其实就是javascript中的 getElementByID
5.获取页面中所有的frame
使用DHTML。
frames:=wb.OleObject.document.frames;
for i:=0 to frames.length do
memo1.lines.Add(frames[i].document.body.innerHTML);
6.BorderStyle=bsNone后Webbrowser会被重新初始化
这是一个让人很意外的一个问题,Delphi在窗口控件的控制方面做得非常好,很少出现这种BUG
根据分析,出现这个现象有很多情况 改变FormStyle也会出现 ; 如果 webbrowser.parent
由panel1改到panel2.也会导致webbrowser重新初始化。
7.直接向Webbrowser中写入html代码,不需要Navigate到实际存在的文件
var
StrStream:TStringStream;
SetNoteStr: string; begin SetNoteStr :='<body bgcolor=222222 align=center><br><p align=center><font size=+2 color=#FFFFFF>扬帆博客 http://wesohon.com</font></p>';
SetNoteStr :=SetNoteStr+'<br><p align=center><font size=+2 color=#FFFFFF>点击左边按钮可查看对应图片</font></p>';
StrStream:=TStringStream.Create(SetNoteStr);
WebBrowser1.Navigate('about:blank');
try
StrStream.Position:=0;
( WebBrowser1.Document as IPersistStreamInit).Load(TStreamadapter.Create(StrStream));
finally
StrStream.Free;
end;
8.前进,后退,刷新
self.WebBrowser1.GoBack
self.WebBrowser1.GoForward
self.WebBrowser1.Refresh
9.捕捉NewWindow2事件,即新开窗口事件
procedure TForm1.WebBrowser1NewWindow2(Sender: TObject;
var ppDisp: IDispatch; var Cancel: WordBool);
var
NewWindow: TForm2;
begin
//exit;
NewWindow:= TForm2.Create(nil);
NewWindow.Show;
ppDisp:= NewWindow.Webbrowser1.DefaultDispatch;
end; 值得一题的是该方法不能获得新开窗口的URL,退一步的方法只能是等到在新的Webbrowser中触发BeforeNavigate2事件判断了
10.网页中存在iframe时判断页面是否下载结束
procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;const pDisp: IDispatch; var URL: OleVariant);
begin
if WebBrowser1.Application = pDisp then showmessage('页面已全部下载完毕')end;
说明一下,每个iframe下载完毕都会触发DocumentComplete事件,所以一个页面在真正下载完毕前可能被触发多次
11. 获取网页中图片//使用DOM模型,什么都能读下来
uses MSHtml, ActiveX;
var
html_doc: IHTMLDocument2;
doc_all : IHtmlElementCollection;
vI : IHtmlImgElement;
begin
html_doc := WebBrowser1.Document as IHTMLDocument2;
doc_all := html_doc.images;
for I := 0 to doc_all.length - 1 do
begin
vI := doc_all.item(I, EMPTYPARAM) as IHtmlImgElement;
//读取vI.src
Memo1.Lines.Add(vI.src);
end;
end;12. 下面函数获得ISomeControl接口var
html_doc: IHTMLDocument2;
doc_all : IHtmlElementCollection;
vI : IHtmlElement;
vD : IDispatch;
begin
html_doc := WebBrowser1.Document as IHTMLDocument2;
doc_all := html_doc.all;
for I := 0 to doc_all.length - 1 do
begin
vI := doc_all.item(I, EMPTYPARAM) as IHtmlElement;
if vI.tagName='OBJECT' then
begin
//读取Classid
Memo1.Lines.Add((vI as IHtmlObjectElement).classid);
//读取包容的对象接口
vD := (vI as IHtmlObjectElement).object_;
...
end;
end;
end;
发表评论
-
gradle编译错误:Could not find method compile() for arguments
2020-09-19 10:50 18650编译(IDEA+Gradle)一个别人的工程,出现一个 ... -
netty心跳检查之UDP篇
2019-09-15 08:50 2480部分UDP通信场景中,需要客户端定期发送心跳信息,以获取终 ... -
解决tomcat部署两个SpringBoot应用提示InstanceAlreadyExistsException
2019-06-30 11:49 3472两个SpringBoot应用部署在一个Tomcat中,单独 ... -
Eclipse配置MyBatis代码自动化功能
2019-06-29 10:16 18351.安装插件 Eclipse中,Help->Ecli ... -
vue.js中使用qrcode生成二维码
2019-05-20 00:00 7690一、安装包 npm install qrcodejs2 --s ... -
MySQL插入数据报错: Incorrect string value: '\xFD\xDE'
2019-03-31 23:19 1281我MySQL数据库用的uft-8字符集,插入数据一直很正常 ... -
vue自定义组件并双向绑定属性
2019-03-08 22:46 3271做了两个子组件,原理基本一样,一个是使用原生的select ... -
vue-router简单示例
2019-03-05 00:32 1179写个基本完整、稍有借鉴意义的示例,防止自己忘记。 &l ... -
“联通充值系统繁忙”轻松应对
2019-02-06 11:03 3999大过年的,联通充个值一直报“充值系统繁忙”。昨天晚上试了几 ... -
electron.js数据库应用---导航菜单(element-ui+mysql)
2019-02-05 21:33 2392一、环境搭建 略, ... -
electron.js数据库应用---入门(mysql+element-ui)
2019-01-27 23:19 7537我的机器:Windows10,64 ... -
SpringMVC 在controller层中注入成员变量request,是否线程安全
2018-12-17 21:17 2771@RestController public class ... -
VueJS 组件参数名命名与组件属性转化
2018-12-03 00:00 2093转自:https://www.cnblogs.com/meiy ... -
vue-resource拦截器实现token发送及检验自动化
2018-11-16 22:38 3086用了很长时间vue-resource,最近思考$http发 ... -
element-ui试用手记
2018-10-29 20:25 1769element-ui、iviewui都以vue.js为基础 ... -
iviewui中表格控件中render的使用示例
2018-07-07 16:46 9801示例了如何在表格中显示按钮,如何将代码转化为文字。 i ... -
Tomcat错误“Alias name tomcat does not identify a key entry”解决
2018-07-05 21:39 6653申请到了阿里云的证书后,下载、按照说明生成jks格式证书、 ... -
阿里云免费证书“fileauth.txt内容配置错误”解决
2018-07-05 20:43 5341最近研究微信小程序开发,上阿里云申请了个证书,使用文件验证 ... -
springboot2.0跨域配置
2018-07-04 22:11 5297springboot2.0跨域配置: 一、代码 ... -
微信小程序使用code换openid的方法(JAVA、SpringBoot)
2018-07-01 21:52 10431微信小程序序的代码中提示,使用code换取openid,但 ...
相关推荐
Webbrowser控件史上最强技巧全集 VB调用webbrowser技巧集
### VB中WEBBROWSER技巧大全知识点详解 #### 一、WebBrowser的方法、属性与事件 WebBrowser 控件是Visual Basic中用于浏览和交互HTML文档的强大工具。它支持一系列的方法、属性和事件,允许开发者实现复杂的网页...
WebBrowser控件是Windows应用程序开发中的一个重要组件,它允许开发者在桌面应用中嵌入Web浏览功能。..."调用WebBrowser技巧集.doc"文档很可能是详细介绍这些技巧的参考资料,值得仔细阅读和学习。
IE_WebBrowser编程技巧 修改WebBrowser的header信息? Delphi查看WebBrowser提交之前的数据头 用TWebBrowser组件在DELPHI中POST数据和取得网页源文件 在 WebBrowser 中直接载入流,不通过文件 判断下载网页成功 ...
### vb6_Webbrowser控件使用技巧 #### 一、获得浏览器信息 在Visual Basic 6.0中,可以通过Webbrowser控件获取浏览器的相关信息。具体实现方式如下: 1. **加载网页**: ```vb Private Sub Command1_Click() ...
在"WebBrowser1技巧的软件源码"中,我们可以学习到一些关于如何更有效地利用WebBrowser1控件的方法。 首先,按字母或数字顺序排列列表框中的列表项是一种常见的需求,特别是在用户界面设计中。在VB中,你可以通过...
【WebBrowser控件使用技巧详解】 WebBrowser控件是.NET框架中用于在应用程序内部嵌入网页浏览功能的一个组件。在开发Windows Forms或WPF应用时,我们常常利用它来实现与网页的交互。以下是一些关于WebBrowser控件的...
Delphi中WebBrowser的使用技巧汇总,对使用webbrowser开发很有帮助。
以下是一些关于WebBrowser控件的基本及进阶技巧: 1. **WebBrowser的方法、属性、事件**: - **方法**:如Navigate()用于导航到指定URL,GoBack()和GoForward()实现前进和后退,Stop()用于停止当前加载的页面。 -...
标题与描述均提及了“Delphi操作WebBrowser的几个技巧”,这一主题聚焦于Delphi编程语言如何有效地控制和交互WebBrowser组件,实现诸如获取网页变量、执行网页函数、设置网页背景、调用网页对象等高级功能。...
### C# WebBrowser页面与Winform交互技巧 在开发基于Windows平台的应用程序时,经常需要使用WebBrowser控件来在Winform应用程序中嵌入网页内容,并且可能需要与这些网页内容进行交云。本文将详细介绍如何在C#中实现...
- **事件处理技巧**:确保在正确的线程上处理事件,并利用`Dispatcher`对象进行异步操作。 - **代码调试**:使用`WebBrowser`控件的`InvokeScript`方法调用JavaScript函数,以检查网页的运行状态。 5. **...
"强制新窗口只在webBrowser打开"的技巧就是解决这个问题的关键。 首先,我们需要理解WebBrowser控件的基本属性和事件。WebBrowser控件有两个重要的事件:`DocumentCompleted`和`NewWindow3`。`DocumentCompleted`...
这需要一定的HTML和C#编程技巧,以及对数据库操作的理解。 另外,描述中提到了"xys_log.LDF"和"xys.mdf",这两个文件看起来像是SQL Server的数据库文件(日志文件和主数据文件)。在实际应用中,这些文件可能用于...
在IT领域,WebBrowser2控件是一个常用的工具,它...而`WebBrowser2_veryhuo.com.rar`可能包含的是相关的源码或其他资源,可以从中学到更多实际应用技巧。学习这些示例,将有助于加深对WebBrowser2控件的理解和应用。
WebBrowser与WinForm交互技巧 在.NET 2.0中,WebBrowser控件提供了一种方便的方式来在WinForm中嵌入Web页面,并且可以与Web页面进行交互。在本文中,我们将通过几个简单的实例,展示如何在WebBrowser与WinForm之间...