webbrowser部分用法

Delphi WebBrowser 基本操作与常见问题的解决方案 前言WebBrowser 作为Delphi 常见的网络浏览控件,我这里整理了一些它的基本操作,遇到了一些问题,我梳理了一下并给出解决方案。 阅读详情
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=0do 
     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;
delphi11.3的WebBrower支持Edge 使用DelphiCE进行WebBrowers的测试 阅读详情

相关推荐

Delphi WebBrowser组件实现简易桌面浏览器

本文还有配套的精品资源,点击获取 简介:在Delphi环境下,利用WebBrowser组件基于Internet Explorer引擎开发具有网页浏览和交互能力的桌面应用程序。本教程详细介绍了从创建VCL Forms项目到实现浏览器核心功能(如URL导航、加载进度展示、错误处理、前进后退按钮)以及增强用户体验功能(例如打印、保存等)。通过这些步骤,你可以构建起一个功能完善的桌...

weixin_32480007的博客 1829

delphi设计简单的web浏览器捕捉NewWindow2事件,即新开窗口事件2

delphi设计简单的web浏览器捕捉NewWindow2事件,即新开窗口事件2 对内存加以处理

Delphi嵌入式WebBrowser组件实战:EmbeddedWB应用详解

本文还有配套的精品资源,点击获取 简介:本文详细介绍了在Windows平台使用Delphi开发桌面应用程序时,如何集成和应用EmbeddedWB组件以实现Web浏览功能。组件提供网页展示和交互能力,并在Delphi D5到D2010版本间不断演进,包含丰富的资源文件如变更日志、安装指南和示例代码等,帮助开发者理解和使用。通过示例程序,开发者可以学习组件的使用方法和高级特性,...

weixin_42437253的博客 2786

[delphi组件] Webbrowser的使用

delphi中Webbrowser的使用1.获得网页中变量值     htm中 var currID=123     程序中可以这么调用 id := Form1.WebBrowser1.OleObject.Document.script.currID     值得说明的是,变量可以是javascript定义的,也可以是vbscript定义的,如果Webbrowser1中找不到该变量,调用会触发一个

mrwu9902的专栏 1048

windows开代理服务器

一、前言 简单说就是一台windows机器做代理。我建议使用win7系统,winserver等实测有很多问题,很多vc包需要自己装,似乎也破解不了等。 注意:我建议要在防火墙开放对应端口的入站出站权限,以免影响代理正常使用。 二、工具 1、 CCproxy 代理软件【已测试】 C...

1万+

Qt6开发自签名证书的https代理服务器

用Qt6实现一个具备类似Fiddler、Burpsuit、Wireshark的https协议抓包功能,并且将代理服务器集成到自己的app内,这样无需修改系统代理设置,使用QWebengineview通过自建的代理服务器,即可实现https包的实时监测、注入等自定义功能。经过验证,这个方案可行,可以在代理服务器端修改客户端发起的请求,也可以修改服务器端返回的任何数据(已解密过的)后再返回给客户端。

dalingjishunan的博客 688

微信多开设置网络代理服务器,还在玩微信双开吗?你out了,哥教你三开四开无数开...

许可/文眼下,微信几乎改变了人们的生活。微商的,各种约的,各种忽悠的,充斥微信朋友圈。于是,一个微信号已经不能满足地球人无聊的生活。在这个时候,有一种叫做微信双开的东东,成为菜鸟们可望而不可及的存在。今天,哥偷偷告诉你一个比微信双开还牛B的方法,保证可以让你在网络世界里令人景仰。首先,你得有一台安卓手机;同时,手机上还得安装一个叫做应用市场的东东。然后,在应用市场上下载:微信多开助手、双开助手、平...

weixin_35952427的博客 2933

特点网站开代理后无法访问_Go实现Https代理服务

作者:Zarten知乎专栏:Go开发深入详解知乎ID: Zarten简介: 互联网一线工作者,尊重原创并欢迎评论留言指出不足之处,也希望多些关注和点赞是给作者最好的鼓励 !概述http(s)代理在日常使用中比较常用,所以这里写了一个https代理服务器,只需另外一台机器就可搭建自己的代理服务器了。此服务器使用Go语言编写,全部使用go语言标准库,没有使用任何第三方库,编译后可以直接使用。下面将从...

weixin_39830323的博客 659

配置你的代理服务器(Ubuntu)这样平常就不用开魔法了

保存并关闭文件:在 Gedit 编辑器中,按下 Ctrl+S 组合键保存文件,然后关闭编辑器。打开终端:在 Ubuntu 中,您可以按下 Ctrl+Alt+T 组合键来打开终端。https_proxy=https://用户名:密码@代理服务器地址:端口号/http_proxy=http://用户名:密码@代理服务器地址:端口号/

douhuanmin123的博客 2863

Delphi Webbrowser使用方法详解(一)

1.webbroser介绍     该组件是一个浏览器组件,可以显示一个指定地址的网页、设置网页打开时的主页以及对网页进行相关的操作,同时也可以对HTML文件进行剪切、复制、粘贴、删除等操作。该 组件在Internet组件页中,属于TWebbrowser类。  它放在程序当中,可以像操作网页一样操作webbrowser控件。 2.webbrowser有哪些应用   webbrowser目前大

xtfnpgy 6002

Delphi WebBrowser控件的使用

Delphi WebBrowser控件的使用 WebBrowser控件属性: 1、Application       如果该对象有效,则返回掌管WebBrowser控件的应用程序实现的自动化对象(IDispatch)。如果在宿主对象中自动化对象无效,程序将返回WebBrowser控件的自动化对象 2、Parent        返回WebBrowser控件的父自动化对象,通常

一个会抄的开发人员f(x) 3730

Delphi TWebBrowser

Delphi WebBrowser控件的使用 WebBrowser控件属性:1、Application如果该对象有效,则返回掌管WebBrowser控件的应用程序实现的自动化对象(IDispatch)。如果在宿主对象中自动化对象无效,程序将返回WebBrowser控件的自动化对象2、Parent 返回WebBrowser控件的父自动化对象,通常是一个容器,例如是宿...

weixin_30835923的博客 845

Delphi 中WebBrowser控件详解实例

Delphi 中WebBrowser控件详解实例 转2008-05-07 12:07        很久都没有原创了,前几天帮朋友做了个网址发布程序,主要应用到了WebBrowser控件。今天主要给大家演示一下过程,让大家学习一下Delphi工具。WebBrowser功能:1。自动加载网页2。去除WebBrowser滚动条3。WebBrowser自身

mrwu9902的专栏 1866

Delphi WebBrowser控件全功能实现

本文还有配套的精品资源,点击获取 简介:Delphi是一种基于Object Pascal的IDE,其WebBrowser控件能够嵌入IE浏览器引擎来开发Web应用。本教程将详细指导如何使用Delphi WebBrowser控件进行网页的完整截图、打印和邮件发送操作。首先解释WebBrowser控件的概念和作用,接着探讨如何通过编程实现网页内容的完整截图,并处理特殊元素如Fl...

weixin_35750747的博客 1162

Delphi WebBrowser与网页交互

WebBrowser1.GoHome;  //到浏览器默认主页 WebBrowser1.Refresh;  //刷新 WebBrowser1.GoBack;  //后退 WebBrowser1.GoForward;  //前进 WebBrowser1.Navigate('...');  //打开指定页面 WebBrowser1.Navigate('about:blan

caonumber的专栏 9860

delphi的webbrowser控件的应用

delphi的webbrowser控件的应用 文章目录delphi的webbrowser控件的应用前言一、Delphi二、实现步骤总结 前言 delphi 的webbrowser控件是以IE为基础显示网页的控件,下面是一个简单的例子。 一、Delphi Delphi是Borland公司研发的可视化开发工具,Delphi是Pascal语言的常用IDE,由于其界面简洁,功能齐全,非常适合进行面向对象编程,它的使用非常方便,通过拖拽即可添加控件,曾是最友好的编译环境。 二、实现步骤 首先在工具栏中找到并添

bjwhile的博客 802
上一篇: webbrowser部分用法
下一篇: 执行网页中的函数
sun280
博客等级 码龄25年 3粉丝 457原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值