http://ju.outofmemory.cn/entry/78083

dcef3 为按钮添加单击事件

BccSafe's Blog 2014-06-01 3706 阅读

演示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 为按钮添加单击事件的更多相关文章

  1. Unity3D NGUI 给button按钮添加单间事件

    Unity3D中, NGUI 给button按钮添加单间事件的方法很多,在这里只给推荐一种比较常用的方法. 推荐方法:使用UIListener. 1.给button组价添加上UIListener.选择 ...

  2. DOM操作-主动触发按钮的单击事件

    代码: ———————————————————————————————— <script>       function fireBtnClick(){        var myBtn ...

  3. 在WPF的DataGrid中对行添加单击事件

    在做的一个c#的项目中发现Datagrid没办法直接对鼠标单击进行响应,调用MouseDown事件也需要点击某一行第二次才能响应.所以借助EventSetter来简单的实现了一个. 界面部分的代码 & ...

  4. 页面中插入flash,并且给flash添加单击事件控制播放,以及获取相关参数.

    <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="100%" hei ...

  5. Android:双层嵌套ViewPager并添加单击事件

    仿网易新闻: 实现原理: 上面的导航栏是一个自定义的ViewGroup(类似ActionBar) 中间内容层是ViewPager套fragment实现左右切换滑动 fragment里面的布局是一个Li ...

  6. 一步一步学android之事件篇——单击事件

    在使用软件的时候单击事件必不可少,比如我想确定.取消等都需要用户的单击,所有的单击事件都是由View.OnClickListener接口来进行处理的,接口定义如下: public static int ...

  7. jQuery 给div绑定单击事件

    说明:这篇随笔介绍的是怎么给div添加单击(click)事件.不再废话 直接看代码 <%@ Page Language="C#" AutoEventWireup=" ...

  8. Android代码规范----按钮单击事件的四种写法

    [前言] 按钮少的时候用第三种的匿名内部类会比较快,比如写demo测试的时候或者登陆界面之类. 按钮多的时候一般选择第四种写法. 一.第一种写法:在XML文件中声明onClick属性(很少用) 在XM ...

  9. 【转】为ListView每个Item上面的按钮添加事件

    原文网址:http://blog.csdn.net/qq435757399/article/details/8256453 1.先看下效果图:        在这里仅供测试,我把数据都写死了,根据需要 ...

随机推荐

  1. Spark-Streaming获取kafka数据的两种方式:Receiver与Direct的方式

    简单理解为:Receiver方式是通过zookeeper来连接kafka队列,Direct方式是直接连接到kafka的节点上获取数据 Receiver 使用Kafka的高层次Consumer API来 ...

  2. 前端开发HTML&css入门——一些其他常用的文本标签

    em标签和strong标签 i标签和b标签 small标签 cite标签 q标签和blockquote标签 em主要表示语气上的强调,em在浏览器中默认使用斜体显示strong表示强调的内容,比em更 ...

  3. c++ Socket客户端和服务端示例版本一

    客户端 #include <stdio.h> #include <stdlib.h> #include <errno.h> #include <sys/soc ...

  4. 来到园子的第two天!!!!!

    经过这几天的打字练习  从练习的第一天到今天(应该是第三天吧) 从67到133字/分钟,我练的是英文文章测试,总的来说挺不容易 ,感觉后几天提升就不好提了呀 不说废话了  简单说一下今天的收获吧 都是 ...

  5. python小实例

    一.跳动的心 love = '\n'.join([''.join([('love'[(x-y) % len('Love')] if ((x*0.05)**2+(y*0.1)**2-1)**3-(x*0 ...

  6. mongo配置

    cmd下操作 cd /d E:\MongoDB\bin 创建数据库: mongod --dbpath E:\MongoDB\data\db 验证是否成功,登陆localhost:27017 进入E:\ ...

  7. MyBatis中返回List

    一般情况下,我们需要返回一个List 在Dao层定义: List<TbAddress> selectAll(); 那么在对应的mapper文件中,应该如下: <select id=& ...

  8. 计蒜客 蓝桥模拟 G. 数列求值

    递归式移项得Ai+1 = 2Ai + 2Ci - Ai-1; 1.A2 = 2A1 + 2C1 - A0; 2.A3 = 2A2 + 2C2 - A1; . . . n.An+1 = 2An + 2C ...

  9. 安装后jdk1.8 配置环境变量以后 版本显示还是1.7

    配置图如下   1.7版本不用卸载  不用就可以了

  10. 如何判断系统是32位还是64位的linux系统

    如何判断系统是32位还是64位的linux系统 某日,需要下载个安装包,忽然忘记了自己的系统是32位还是64位的系统了,一时想不起来怎么查看时32位还是64位,呵呵,随便百度下,就发现有好多方法,这里 ...