1. 程式人生 > >Chromimu與JS交互的測試

Chromimu與JS交互的測試

subst tin 轉載 proc all hand data- report custom

http://blog.csdn.net/grassdragon/article/details/51659798

Chromimu與JS交互的測試

技術分享圖片 分類:

測試一

為解決ExecuteJavascript無法得到返回值的問題,嘗試采用JS Dialog和OnJsDialog的方法。

測試結果:可以采用此法傳遞Js的結果值。

JS

alter(‘abc‘);

confirm(‘abc‘);

DELPHI

procedure TForm1.ChromiumFMXJsdialog(Sender: TObject;
const browser: ICefBrowser; const originUrl, acceptLang: ustring;
dialogType: TCef

JsDialogType; const messageText, defaultPromptText: ustring;
callback: ICefJsDialogCallback; out suppressMessage, Result: Boolean);
begin
case dialogType of
TCefJsDialogType.JSDIALOGTYPE_ALERT: self.Caption:=‘ALTERT:‘ + messageText;
TCefJsDialogType.JSDIALOGTYPE_CONFIRM: self.Caption:=‘CONFIRM:‘ + messageText;
end;
Result:=true;
end;

測試二

JS調用Delphi自定義的方法。

測試結果:

1. 可以成功調用;

2. JS可以接收到Delphi方法的返回值;

3. JS的輸入參數長度,65214*9是沒問題的,更長的長度沒有做測試。

TTestExtension = class
class function addTask(songnumber: string): boolean;
end;

TCustomRenderProcessHandler = class(TCefRenderProcessHandlerOwn)
protected
procedure OnWebKitInitialized; override;
end;

class function TTestExtension.addTask(songnumber: string): boolean;

begin
showmessage(‘addTask:‘ + songnumber);
// result:= (songnumber.Substring(0,1)=‘1‘) or //JS可接收該返回值
// (songnumber.Substring(0,1)=‘2‘) ;
end;

procedure TCustomRenderProcessHandler.OnWebKitInitialized;

begin
TCefRTTIExtension.Register(‘app‘, TTestExtension);
end;

initialization
CefRemoteDebuggingPort := 9000;
CefRenderProcessHandler := TCustomRenderProcessHandler.Create;
CefBrowserProcessHandler := TCefBrowserProcessHandlerOwn.Create;

測試三

用默認瀏覽器打開Chromium頁面中的"_blank"超鏈。

測試結果:

1. 可以在delphi中捕獲超鏈的點擊事件,用自定義的方法來替代Chromium原生的瀏覽器小窗口。

2. 在delphi中返回False給Js,或者在Js中直接return false,都可以阻止Chromium原生小窗口的打開。

JS

$(document).ready(function(){
$("a[target=_blank]").click(function(event){
var href = $(this).attr("href");
return app.doClickHyperlink(href);
//return false;
});

DELPHI

TTestExtension = class
class function doClickHyperlink(href: string): boolean;
end;

class function TTestExtension.doClickHyperlink(href: string): boolean;
begin
result:=ShellExecute(0, ‘Open‘, PChar(href), nil,nil,1)<0; //返回False給JS,以阻止Chromium原生的瀏覽器小窗口。
end;

Chromimu與JS交互的測試