delphi 在 TEdgeBrowser 中执行 JS 脚本  
官方Delphi 学习QQ群: 682628230(三千人)
频道

delphi 在 TEdgeBrowser 中执行 JS 脚本


代码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