https://www.cnblogs.com/Delphi-Farmer/p/4103708.html
2015-01-20修改:以下方法不适合delphi7,在CEF3源码中限制了delphi_14 up,对于被我误导的朋友说声抱歉
在CEF1中JS调用delphi的方法已经贴过:http://www.cnblogs.com/Delphi-Farmer/archive/2013/05/17/3083794.html
但是CEF3升级了,貌似内核都不一样了,CEF1中的方法失效了,查阅了一些资料,得出如下结果:
delphi代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
interface
uses
ceflib;
//其它
type
//这里建议用class 不建议用class(TThread) 不然有些地方要报错
TMyExtension =
class
(TThread)
// or just class, (extension code execute in thread)
public
class
function _geta: string ;
end
;
TCustomRenderProcessHandler =
class
(TCefRenderProcessHandlerOwn)
protected
procedure
OnWebKitInitialized; override;
end
;
implementation
class
function TMyExtension . _geta: string ;
begin
Result:=
'调用成功'
;
end
;
procedure
TCustomRenderProcessHandler . OnWebKitInitialized;
begin
TCefRTTIExtension
.
Register(
'JS_DELPHI'
, TMyExtension);
end
;
initialization
CefRenderProcessHandler := TCustomRenderProcessHandler
.
Create;
end
.
|
JS调用实例:
1
|
<script> alert( JS_DELPHI._geta() ); <script>
|
这种方式调用时要写注册的类名:JS_DELPHI
在CEF1中是不需要写类名的,这点要注意
有研究DECF3的同学加群啊:DCEF共同进步 426277694