代码1:
System.NetEncoding;
procedure TEdgeViewForm.EdgeBrowser1ExecuteScript(Sender: TCustomEdgeBrowser;
AResult: HRESULT; const AResultObjectAsJson: string);
begin
if AResultObjectAsJson <> 'null' then
memoHTML.Text := TNetEncoding.URL.Decode(AResultObjectAsJson).DeQuotedString('"');
end;
procedure TForm1.Button1Click(Sender: TObject);
var
LMyScript: String;
begin
FMyResult := ''; // Clear it
LMyScript := 'window.chrome.webview.postMessage("MyResult");';
EdgeBrowser.ExecuteScript(LMyScript);
//How wait for EdgeBrowserWebMessageReceived() to get FMyResult?
while FMyResult = '' do Application.ProcessMessages; // Not good - but might work
ShowMessage(FMyResult);
end;
代码2:
type TForm1 = class(TForm)
EdgeBrowser: TEdgeBrowser;
procedure EdgeBrowserWebMessageReceived(Sender: TCustomEdgeBrowser; Args: TWebMessageReceivedEventArgs);
private
FQueue: TQueue<String>;
FMyResult1: String;
FMyResult2: String;
procedure JSExec;
procedure ShowResult;
end;procedure TForm1.Button1Click(Sender: TObject);begin
FQueue.Enqueue('JSExec1');
FQueue.Enqueue('JSExec2');
JSExec;end;procedure TForm1.EdgeBrowserWebMessageReceived(Sender: TCustomEdgeBrowser; Args: TWebMessageReceivedEventArgs);begin
if (JSON.messageType = 'R1') then //Get from Args (omitted for simplification)
FMyResult1 := JSON.value;
if (JSON.messageType = 'R2') then
FMyResult2 := JSON.value;
JSExec;end;procedure TForm1.JSExec;var
LExec: String;
LMyScript: String;begin
if (FQueue.Count = 0) then
begin
ShowResult;
Exit;
end;
LExec := FQueue.Dequeue();
if (LExec = 'JSExec1') then
begin
LMyScript := 'window.chrome.webview.postMessage({messageType: "R1", value: "MyResult1"});';
EdgeBrowser.ExecuteScript(LMyScript);
Exit;
end;
if (LExec = 'JSExec2') then
begin
LMyScript := 'window.chrome.webview.postMessage({messageType: "R2", value: "MyResult2"});';
EdgeBrowser.ExecuteScript(LMyScript);
Exit;
end;end;procedure TForm1.ShowResult;begin
ShowMessage(FResult1);
ShowMessage(FResult2);end;
Copyright © 2014 DelphiW.com 开发 源码 文档 技巧 All Rights Reserved
晋ICP备14006235号-8 晋公网安备 14108102000087号
执行时间: 0.034171104431152 seconds