Delphi 中实现BHO与WebBrowser交互技巧
"这篇文档是关于使用Delphi开发BHO(Browser Helper Object)的教程,主要涉及在Delphi中操作WebBrowser控件与JavaScript交互的方法。" 在Delphi中开发BHO(浏览器辅助对象)是一种扩展Internet Explorer功能的方式。BHO可以监控和影响用户的浏览体验,例如添加自定义功能或修改页面行为。以下是一些关键知识点,基于提供的部分内容: 1. 获取JavaScript变量: JavaScript中的变量可以通过WebBrowser控件的`OleObject.Document.script`属性访问。例如,如果HTML页面中有`var currID = 123`,你可以通过`Form1.WebBrowser1.OleObject.Document.script.currID`来获取这个值。 2. 执行JavaScript代码: 要在网页中执行JavaScript代码,可以使用`WebBrowser1.OleObject.Document.parentWindow.execScript`方法。比如,调用一个名为`getNextID`的函数并更新`currID`的值,可以这样写: ```delphi tmp := 'currID=getNextID(currID)+' + #13#10; Form1.WebBrowser1.OleObject.Document.parentWindow.execScript(tmp, 'JavaScript'); ``` 3. 修改页面样式: 可以直接通过WebBrowser控件的`OleObject.Document`对象来改变页面元素的属性,如背景图片和颜色。例如,将背景图片设置为`bg.gif`,背景颜色设置为浅灰色: ```delphi WebBrowser1.OleObject.Document.body.background := 'http://seelearn.com/bg.gif'; WebBrowser1.OleObject.Document.body.bgcolor := '#eeeeee'; ``` 4. 获取元素属性: 使用`getElementByID`方法可以从JavaScript对象中获取指定ID的元素属性。比如,获取ID为`img1`的图片源: ```delphi src := WebBrowser1.OleObject.Document.getElementByID('img1').src; ``` 5. 遍历框架内的内容: 如果网页包含框架(frames),可以遍历所有框架并访问它们的文档内容。例如: ```delphi frames := wb.OleObject.Document.frames; for i := 0 to frames.length - 1 do memo1.Lines.Add(frames[i].document.body.innerHTML); ``` 这将遍历所有框架并将每个框架的body内容添加到Memo控件的Lines列表中。 6. 隐藏WebBrowser控件边框: 要隐藏WebBrowser控件的边框,通常会将其BorderStyle设置为`bsNone`。但这样可能会导致一些显示问题,如滚动条不正常。为解决这个问题,可以将WebBrowser控件放入一个Panel中,并调整Panel的属性来实现无边框效果。 7. 动态加载HTML内容: 若需向WebBrowser控件加载自定义HTML,可以创建一个字符串流,然后使用`Navigate`方法导航到内存中的HTML。例如: ```delphi var StrStream: TStringStream; SetNoteStr: string; begin SetNoteStr := '<html><body><h1>你好,世界!</h1></body></html>'; StrStream := TStringStream.Create(SetNoteStr); try WebBrowser1.Navigate(StrStream.DataString); finally StrStream.Free; end; end; ``` 这段代码将加载一个简单的HTML页面到WebBrowser控件中。 这些技术可以帮助开发者在Delphi中创建强大的BHO插件,实现与网页的深度交互,以及定制化的浏览器功能。
delphi中Webbrowser问题集锦Delphi 2009-06-19 11:29:26 阅读118 评论0 字号:大中小
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重新
初始化。
下载后可阅读完整内容,剩余2页未读,立即下载
- 粉丝: 2
- 资源: 295
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- WebLogic集群配置与管理实战指南
- AIX5.3上安装Weblogic 9.2详细步骤
- 面向对象编程模拟试题详解与解析
- Flex+FMS2.0中文教程:开发流媒体应用的实践指南
- PID调节深入解析:从入门到精通
- 数字水印技术:保护版权的新防线
- 8位数码管显示24小时制数字电子钟程序设计
- Mhdd免费版详细使用教程:硬盘检测与坏道屏蔽
- 操作系统期末复习指南:进程、线程与系统调用详解
- Cognos8性能优化指南:软件参数与报表设计调优
- Cognos8开发入门:从Transformer到ReportStudio
- Cisco 6509交换机配置全面指南
- C#入门:XML基础教程与实例解析
- Matlab振动分析详解:从单自由度到6自由度模型
- Eclipse JDT中的ASTParser详解与核心类介绍
- Java程序员必备资源网站大全