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代碼:
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調用實例:
<script> alert( JS_DELPHI._geta() ); <script>
這種方式調用時要寫注冊的類名:JS_DELPHI
在CEF1中是不需要寫類名的,這點要注意
有研究DECF3的同學加群啊:DCEF共同進步 426277694
