dcef3 为按钮添加单击事件
http://ju.outofmemory.cn/entry/78083
dcef3 为按钮添加单击事件
演示dcef3操作HTML DOM的方法
本来想拿Google下手,可是由于GFW的关系,还是用Baidu测试好了
给标题名为“百度一下”的按钮添加一个执行delphi函数的单击事件
{$I cef.inc}
type
TCustomRenderProcessHandler = class(TCefRenderProcessHandlerOwn)
protected
procedure OnWebKitInitialized; override;
function OnProcessMessageReceived(const browser: ICefBrowser; sourceProcess: TCefProcessId;
const message: ICefProcessMessage): Boolean; override;
end;
TTestExtension = class
class function hello: string;
end;
procedure TMainForm.Button2Click(Sender: TObject);
begin
Chromium.browser.SendProcessMessage(PID_RENDERER,
TCefProcessMessageRef.New('visitdom'));//操作DOM
end;
procedure ButtonClickProc(const Event: ICefDomEvent);
begin
ShowMessage('Click The Button');
end;
procedure VisitDomProc(const Doc: ICefDomDocument);
var
ButtonNode: ICefDomNode;
begin
ButtonNode := Doc.GetElementById('su1');
if Assigned(ButtonNode) then
ButtonNode.AddEventListenerProc('click', True, ButtonClickProc);
end;
{ TCustomRenderProcessHandler }
function TCustomRenderProcessHandler.OnProcessMessageReceived(
const browser: ICefBrowser; sourceProcess: TCefProcessId;
const message: ICefProcessMessage): Boolean;
begin
{$IFDEF DELPHI14_UP}
if (message.Name = 'visitdom') then
begin
browser.MainFrame.VisitDomProc( VisitDomProc);
Result := True;
end
else
{$ENDIF}
Result := False;
end;
procedure TCustomRenderProcessHandler.OnWebKitInitialized;
begin
{$IFDEF DELPHI14_UP}
TCefRTTIExtension.Register('app', TTestExtension);
{$ENDIF}
end;
{ TTestExtension }
class function TTestExtension.hello: string;
begin
Result := 'Hello from Delphi';
end;
initialization
CefRenderProcessHandler := TCustomRenderProcessHandler.Create;
CefBrowserProcessHandler := TCefBrowserProcessHandlerOwn.Create;
end.

dcef3 为按钮添加单击事件的更多相关文章
- Unity3D NGUI 给button按钮添加单间事件
Unity3D中, NGUI 给button按钮添加单间事件的方法很多,在这里只给推荐一种比较常用的方法. 推荐方法:使用UIListener. 1.给button组价添加上UIListener.选择 ...
- DOM操作-主动触发按钮的单击事件
代码: ———————————————————————————————— <script> function fireBtnClick(){ var myBtn ...
- 在WPF的DataGrid中对行添加单击事件
在做的一个c#的项目中发现Datagrid没办法直接对鼠标单击进行响应,调用MouseDown事件也需要点击某一行第二次才能响应.所以借助EventSetter来简单的实现了一个. 界面部分的代码 & ...
- 页面中插入flash,并且给flash添加单击事件控制播放,以及获取相关参数.
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="100%" hei ...
- Android:双层嵌套ViewPager并添加单击事件
仿网易新闻: 实现原理: 上面的导航栏是一个自定义的ViewGroup(类似ActionBar) 中间内容层是ViewPager套fragment实现左右切换滑动 fragment里面的布局是一个Li ...
- 一步一步学android之事件篇——单击事件
在使用软件的时候单击事件必不可少,比如我想确定.取消等都需要用户的单击,所有的单击事件都是由View.OnClickListener接口来进行处理的,接口定义如下: public static int ...
- jQuery 给div绑定单击事件
说明:这篇随笔介绍的是怎么给div添加单击(click)事件.不再废话 直接看代码 <%@ Page Language="C#" AutoEventWireup=" ...
- Android代码规范----按钮单击事件的四种写法
[前言] 按钮少的时候用第三种的匿名内部类会比较快,比如写demo测试的时候或者登陆界面之类. 按钮多的时候一般选择第四种写法. 一.第一种写法:在XML文件中声明onClick属性(很少用) 在XM ...
- 【转】为ListView每个Item上面的按钮添加事件
原文网址:http://blog.csdn.net/qq435757399/article/details/8256453 1.先看下效果图: 在这里仅供测试,我把数据都写死了,根据需要 ...
随机推荐
- RNN, LSTM, GRU cells
项目需要,先简记cell,有时间再写具体改进原因 RNN cell LSTM cell: GRU cell: reference: 1.https://towardsdatascience.com/a ...
- 【问题解决方案】visudo: /etc/sudoers is busy, try again later
参考链接: 博客园:visudo: /etc/sudoers is busy, try again later CSDN:Shell 获取进程号并杀掉该进程 注:找到几篇相同的参考内容,都是只有查看进 ...
- Spring基础08——使用p命名空间
1.使用p命名空间 为了简化xml配置,越来越多的xml文件采用属性而非子元素配置信息,Spring从2.5版本开始引入了一个新的p命名空间,可以通过<bean>元素属性的方式配置Bean ...
- JavaEE高级-MyBatis学习笔记
一.MyBatis简介 - MyBatis 是支持定制化 SQL.存储过程以及高级映射的优秀的持久层框架. - MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集. - My ...
- STM32 总线
AHB,是Advanced High performance Bus的缩写,译作高级高性能总线,这是一种“系统总线”.AHB主要用于高性能模块(如CPU.DMA和DSP等)之间的连接.AHB 系统由主 ...
- Linux 安装FTP服务
Linux 安装FTP服务,简单入门 环境: 虚拟机:Oracle VM VirtualBox. 系统:CentOS 7. (1)判断是否安装了ftp: rpm -qa | grep vsftpd 或 ...
- 最近关于Qt学习的一点碎碎念
最近关于Qt学习的一点碎碎念 一直在使用Qt,但是最近对Qt的认识更加多了一些.所以想把自己的一些想法记录下来. Qt最好的学习资料应该是官方的参考文档了.对Qt的每一个类都有非常详细的介绍.我做了一 ...
- apply_nodes_func
import torch as th import dgl g=dgl.DGLGraph() g.add_nodes(3) g.ndata["x"]=th.ones(3,4) #n ...
- zookeeper之三 ZKClient客户端的使用
ZKClient在原生API接口上进行了包装,同时在内部实现了诸如session超时重连.watcher反复注册等功能,使得zookeeper客户端繁琐的细节对开发人员透明.下面将从以下几个方面来使用 ...
- nginx的配置和基本参数说明
16 117 118 119 120 121 122 123 #运行用户 user nobody; #启动进程,通常设置成和cpu的数量相等 worker_processes 1; #全局错误日 ...