首页 > 其他分享 >delphi中WEBBrowser网页html相互调用(一)

delphi中WEBBrowser网页html相互调用(一)

时间:2022-09-19 23:12:56浏览次数:86  
标签:WebBrowser1 HTML url doc delphi html WEBBrowser var OnTriggerExEvent

1、基本操作
1.1、激活

var doc,url:Olevariant ;
begin
url:='about:blank' ;//或者一个有实际意义的url
WebBrowser1.Navigate2(url);//这样就激活了!
end;

1.2、写HTML代码

var doc:Olevariant ;
s:string;
begin
doc:=WebBrowser1.Document;
doc.clear;//清楚缘由内容,以便写新内容
doc.write('<html>');
//其它代码
doc.write('</html>');
doc.close;//这样就生效了!
end;

1.3、获得HTML文本

var doc:Olevariant ;
s:string;
begin
doc:=WebBrowser1.Document;
s:=doc.documentElement.outerHTML;//s里就是HTML文本了
//处理s就行了
end;

2、中级操作
2.1、获得其中HTML元素的值

var doc:olevariant;
s:string;
begin
doc:=WebBrowser1.Document;
s:=doc.all.btn.value;
end;

2.2、改写其中HTML元素的值

var doc:olevariant;
begin
doc:=WebBrowser1.Document;
doc.all.btn.value:='123123';
end;

3、高级操作
3.1、触发其中HTML元素的事件

var doc:olevariant;
begin
doc:=WebBrowser1.Document;
doc.all.btn.onclick;
end;

3.2、让其中的元素执行webbrowser之外的delphi代码
本来,这有很复杂的解决办法,但那部分属于ATL的知识比较难掌握,因此绕了一下:
让那些需要执行delphi的HTML元素,调用一个函数叫做triggerExEvent,参数是HTML元素的名称,然后是若干参数。
triggerExEvent是javascript函数,有不确定个参数,但第一个肯定是表示元素的名称。 triggerExEvent将参数组成字符串,然后前面冠以"#OnTriggerExEvent:",作为url,然后导航。
在webbrowser的onNavigator2事件里,判断url中是否包含"#OnTriggerExEvent:",如果包含怎作如下处理:
a、cancel这次导航;b、将"#OnTriggerExEvent:"之后的信息截取,作为参数传递给webbrowser的新增一个事件OnTriggerExEvent事件,其参数有两个:1、控件名称;2、一个字符串参数。
这样,用户可以在OnTriggerExEvent事件里处理HTML的点击等事件了
例如,我为webbrowser派生新类,叫做webbrowserEx,它有一个事件叫做OnTriggerExEvent
有个js文件包含这样的函数:

function triggerExEvent(cmpnt_id,event_nm,optionstr)
{url='#triggerExEvent:id=';
url=url+cmpnt_id+';eventnm='+event_nm;
if(optionstr) url=url+';params=optionstr';
location=url;}

在HTML文本里可以这样写:

<input type="button" name="Submit" value="按钮" onClick="triggerExEvent('Submit','click',null);">

这样,点击网页里的按钮时,会触发delphi写的代码,这些代码根据传递过来的参数,再进行调用其它合适的事件,也可以让webbrowserEx自动寻找合适的事件来触发,只有寻找不到时才去找JS的方法。

 

标签:WebBrowser1,HTML,url,doc,delphi,html,WEBBrowser,var,OnTriggerExEvent
From: https://www.cnblogs.com/tang-delphi/p/16709466.html

相关文章

  • Delphi 用程序实现自动的html操作
    unitUnit1; interface uses Windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms, Dialogs,OleCtrls,SHDocVw,mshtml,StdCtrls,......
  • HTML5
    HTML :HyperTextMarkupLanguage封装JS的库  Jqueryw3c 标准 万维网联盟结构化标准语言(HTMLXML)表现标准语言(CSS)行为标准(DOMECMAScript)......
  • HTML基础
    第二天HTML基础列表标签ul无序列表(只允许包含li标签)li可以包含任意内容 ol有序列表(只允许包含li标签)li可以包含任意内容 dl自定义列表(只允......
  • html2canvas把dom元素转换成图片时跨域,crossorigin="anonymous"导致跨域问题
    1.前端使用html2canvas是需要注意配置  crossorigin="anonymous"<divclass="c-l-c"ref="lz-image2"><imgclass="image":src="dataObj.matchFile.fileUrl+'?'......
  • Delphi WebBrowser完成网页自动登录
    订制一些WEB数据抓取项目时,会遇到需要先登录网站系统,这时候我们通常会做成由系统自动登录的方式。分析网页要完成这项功能,首先需要对项目的网页进行分析,找到关键数据项的......
  • Delphi实现HTMLWebBrowser实现HTML界面
    HTML的界面有以下特点:图文混排,格式灵活,可以包含Flash、声音和视频等,实现图文声像的多媒体界面,而且易于建立和维护。另外,HTML的显示环境一般机器上都具备,通常不需要安装额外......
  • 使用这 3 个未充分利用的 HTML 事件为您的网站添加一些风格
    使用这3个未充分利用的HTML事件为您的网站添加一些风格Photoby阿迪·戈德斯坦on不飞溅在网络上脱颖而出变得越来越困难,同时这样做也越来越重要。在这里,我收集......
  • 纯HTML、CSS制作Tab页面浏览(国外youtube分享)
    纯HTML、CSS制作Tab页面浏览(国外youtube分享)影片来源https://www.youtube.com/watch?v=oLqdy95LZSw&list=WL&index=72&t=259s近期执行一个小Project,主要是复制网页版......
  • index.html (Apache) 的正确缓存清除
    index.html(Apache)的正确缓存清除来自CompetaIT档案;BastiaanDressen于2018年2月22日首次发表。部署JavaScript应用程序的一种方法是使用一些构建工具(......
  • MiniProgramError {"data":"<!DOCTYPE html>\n<html lang=\"en\"&gt
    uniapp向后台发送带参数的post请求,在微信小程序运行出现如下错误:MiniProgramError{"data":"<!DOCTYPEhtml>\n<htmllang=\"en\">\n<head>\n<metacharset=\"utf-8\">\n<......