1.获得网页中变量值 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://seelearn.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; 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事件,所以一个页面在真正下载完毕前可能被触发多次 初始化和终止化(Initialization & Finalization) 大家在执行TWebBrowser的某个方法以进行期望的操作,如ExecWB等的时候可能都碰到过“试图激活未注册的丢失目标”或“OLE对象未注册”等错误,或者并没有出错但是得不到希望的结果,比如不能将选中的网页内容复制到剪贴板等。以前用它编程的时候,我发现ExecWB有时侯起作用但有时侯又不行,在Delphi生成的缺省工程主窗口上加入TWebBrowser,运行时并不会出现“OLE对象未注册”的错误。同样是一个偶然的机会,我才知道OLE对象需要初始化和终止化(懂得的东东实在太少了)。 Initialization OleInitialize(nil); finalization try OleUninitialize; except end; 去掉滚动条的方法:核心代码:WebBrowser1.oleobject.Document.body.Scroll:= ‘no’; 利用这个代码去掉滚动条的前提是webbrowser中必须有打开的网页,也就是在网页加载完完毕后再去掉滚动条。所以首先要判断页面是否加载完毕,如果加载完毕,就执行上面的语句去掉滚动条。 第一步:在WebBrowser1DocumentComplete事件中置一个标志tag:=1(代表加载完毕) 代码如下: procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant); begin tag:=1; //去掉Webbrowser1滚动条的标志 end; 第二步: procedure TForm1.SpeedButton1Click(Sender: TObject); var Doc: IHTMLDocument2; begin tag := 0; //去掉Webbrowser1滚动条的标志 WebBrowser1.Navigate2(’http://www.163.com’); while (tag=0) do Application.ProcessMessages; WebBrowser1.oleobject.Document.body.Scroll := ‘no’; end; 注意:使用前必须在uses中加入mshtml; ==========================题外话 //去掉滚动条后如何翻页呢?用如下代码 var Doc: IHTMLDocument2; begin Doc :=WebBrowser1.Document as IHTMLDocument2; Doc.Get_ParentWindow.Scroll(x,y); end; ^^^你要滚动的位置 webbrowser不弹出错误提示框 设置一下这个属性:webbrowser1.silent :=true 让Webbrowser中的链接点击时在自身窗口打开 在WebBrowser的NewWindow2事件中设置代码: procedure TForm1.WebBrowserNewWindow2(Sender: TObject; var ppDisp: IDispatch; var Cancel: WordBool); begin // 將新視窗在自身開啟 ppdisp := webBrowser.Application; end; 屏蔽WebBrower的右键菜单 放一个ApplicationEvents控件,在ApplicationEvents的事件OnMessage中设置如下代码: (ApplicationEvents控件在delphi中的additional选项卡上找) procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean); begin //屏敝网页右键 if Msg.message = WM_RBUTTONDOWN then begin //如果去掉下面这行就是屏蔽右键菜单,现在为自定义右键菜单 // popupmenu1.Popup(Mouse.CursorPos.X, Mouse.CursorPos.Y); Handled := True; end; end; |
相关推荐
Delphi WebBrowser组件实现简易桌面浏览器
本文还有配套的精品资源,点击获取 简介:在Delphi环境下,利用WebBrowser组件基于Internet Explorer引擎开发具有网页浏览和交互能力的桌面应用程序。本教程详细介绍了从创建VCL Forms项目到实现浏览器核心功能(如URL导航、加载进度展示、错误处理、前进后退按钮)以及增强用户体验功能(例如打印、保存等)。通过这些步骤,你可以构建起一个功能完善的桌...
delphi设计简单的web浏览器捕捉NewWindow2事件,即新开窗口事件2
delphi设计简单的web浏览器捕捉NewWindow2事件,即新开窗口事件2 对内存加以处理
Delphi嵌入式WebBrowser组件实战:EmbeddedWB应用详解
本文还有配套的精品资源,点击获取 简介:本文详细介绍了在Windows平台使用Delphi开发桌面应用程序时,如何集成和应用EmbeddedWB组件以实现Web浏览功能。组件提供网页展示和交互能力,并在Delphi D5到D2010版本间不断演进,包含丰富的资源文件如变更日志、安装指南和示例代码等,帮助开发者理解和使用。通过示例程序,开发者可以学习组件的使用方法和高级特性,...
[delphi组件] Webbrowser的使用
delphi中Webbrowser的使用1.获得网页中变量值 htm中 var currID=123 程序中可以这么调用 id := Form1.WebBrowser1.OleObject.Document.script.currID 值得说明的是,变量可以是javascript定义的,也可以是vbscript定义的,如果Webbrowser1中找不到该变量,调用会触发一个
windows开代理服务器
一、前言 简单说就是一台windows机器做代理。我建议使用win7系统,winserver等实测有很多问题,很多vc包需要自己装,似乎也破解不了等。 注意:我建议要在防火墙开放对应端口的入站出站权限,以免影响代理正常使用。 二、工具 1、 CCproxy 代理软件【已测试】 C...
Qt6开发自签名证书的https代理服务器
用Qt6实现一个具备类似Fiddler、Burpsuit、Wireshark的https协议抓包功能,并且将代理服务器集成到自己的app内,这样无需修改系统代理设置,使用QWebengineview通过自建的代理服务器,即可实现https包的实时监测、注入等自定义功能。经过验证,这个方案可行,可以在代理服务器端修改客户端发起的请求,也可以修改服务器端返回的任何数据(已解密过的)后再返回给客户端。
微信多开设置网络代理服务器,还在玩微信双开吗?你out了,哥教你三开四开无数开...
许可/文眼下,微信几乎改变了人们的生活。微商的,各种约的,各种忽悠的,充斥微信朋友圈。于是,一个微信号已经不能满足地球人无聊的生活。在这个时候,有一种叫做微信双开的东东,成为菜鸟们可望而不可及的存在。今天,哥偷偷告诉你一个比微信双开还牛B的方法,保证可以让你在网络世界里令人景仰。首先,你得有一台安卓手机;同时,手机上还得安装一个叫做应用市场的东东。然后,在应用市场上下载:微信多开助手、双开助手、平...
特点网站开代理后无法访问_Go实现Https代理服务
作者:Zarten知乎专栏:Go开发深入详解知乎ID: Zarten简介: 互联网一线工作者,尊重原创并欢迎评论留言指出不足之处,也希望多些关注和点赞是给作者最好的鼓励 !概述http(s)代理在日常使用中比较常用,所以这里写了一个https代理服务器,只需另外一台机器就可搭建自己的代理服务器了。此服务器使用Go语言编写,全部使用go语言标准库,没有使用任何第三方库,编译后可以直接使用。下面将从...
配置你的代理服务器(Ubuntu)这样平常就不用开魔法了
保存并关闭文件:在 Gedit 编辑器中,按下 Ctrl+S 组合键保存文件,然后关闭编辑器。打开终端:在 Ubuntu 中,您可以按下 Ctrl+Alt+T 组合键来打开终端。https_proxy=https://用户名:密码@代理服务器地址:端口号/http_proxy=http://用户名:密码@代理服务器地址:端口号/
Delphi Webbrowser使用方法详解(一)
1.webbroser介绍 该组件是一个浏览器组件,可以显示一个指定地址的网页、设置网页打开时的主页以及对网页进行相关的操作,同时也可以对HTML文件进行剪切、复制、粘贴、删除等操作。该 组件在Internet组件页中,属于TWebbrowser类。 它放在程序当中,可以像操作网页一样操作webbrowser控件。 2.webbrowser有哪些应用 webbrowser目前大
Delphi WebBrowser控件的使用
Delphi WebBrowser控件的使用 WebBrowser控件属性: 1、Application 如果该对象有效,则返回掌管WebBrowser控件的应用程序实现的自动化对象(IDispatch)。如果在宿主对象中自动化对象无效,程序将返回WebBrowser控件的自动化对象 2、Parent 返回WebBrowser控件的父自动化对象,通常
Delphi TWebBrowser
Delphi WebBrowser控件的使用 WebBrowser控件属性:1、Application如果该对象有效,则返回掌管WebBrowser控件的应用程序实现的自动化对象(IDispatch)。如果在宿主对象中自动化对象无效,程序将返回WebBrowser控件的自动化对象2、Parent 返回WebBrowser控件的父自动化对象,通常是一个容器,例如是宿...
Delphi 中WebBrowser控件详解实例
Delphi 中WebBrowser控件详解实例 转2008-05-07 12:07 很久都没有原创了,前几天帮朋友做了个网址发布程序,主要应用到了WebBrowser控件。今天主要给大家演示一下过程,让大家学习一下Delphi工具。WebBrowser功能:1。自动加载网页2。去除WebBrowser滚动条3。WebBrowser自身
Delphi WebBrowser控件全功能实现
本文还有配套的精品资源,点击获取 简介:Delphi是一种基于Object Pascal的IDE,其WebBrowser控件能够嵌入IE浏览器引擎来开发Web应用。本教程将详细指导如何使用Delphi WebBrowser控件进行网页的完整截图、打印和邮件发送操作。首先解释WebBrowser控件的概念和作用,接着探讨如何通过编程实现网页内容的完整截图,并处理特殊元素如Fl...
Delphi WebBrowser与网页交互
WebBrowser1.GoHome; //到浏览器默认主页 WebBrowser1.Refresh; //刷新 WebBrowser1.GoBack; //后退 WebBrowser1.GoForward; //前进 WebBrowser1.Navigate('...'); //打开指定页面 WebBrowser1.Navigate('about:blan
delphi的webbrowser控件的应用
delphi的webbrowser控件的应用 文章目录delphi的webbrowser控件的应用前言一、Delphi二、实现步骤总结 前言 delphi 的webbrowser控件是以IE为基础显示网页的控件,下面是一个简单的例子。 一、Delphi Delphi是Borland公司研发的可视化开发工具,Delphi是Pascal语言的常用IDE,由于其界面简洁,功能齐全,非常适合进行面向对象编程,它的使用非常方便,通过拖拽即可添加控件,曾是最友好的编译环境。 二、实现步骤 首先在工具栏中找到并添
1829




被折叠的 条评论
为什么被折叠?



