简体   繁体   English

TEmbeddedWB.ExecScriptEx无法使用JavaScript

[英]TEmbeddedWB.ExecScriptEx not working with JavaScript

Put a TMemo , a TEmbeddedWB and a TButton on a Delphi VCL form. TMemoTEmbeddedWBTButton放在Delphi VCL表单上。

This is the code from the form unit: 这是表单单元的代码:

procedure TForm1.Button1Click(Sender: TObject);
var
  vResult: OleVariant;
  Para1: string;
begin
  Para1 := '5'; // edPara.Text;
  vResult := EmbeddedWB1.ExecScriptEx('evaluate', [Para1]);
  ShowMessage('Result from the Script: ' + IntToStr(vResult));
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  EmbeddedWB1.HTMLCode.Assign(Memo1.Lines);
end;

This is the content of the Memo1.Lines : 这是Memo1.Lines的内容:

<HTML> 
<HEAD> 
<TITLE>Test Script</TITLE> 
<SCRIPT> 
  function evaluate(x) { alert("Hello from the script evaluate(x)"); return eval(x * x); } 
</SCRIPT> 
</HEAD> 
<BODY> TEST Script: eval(x * x)</BODY> 
</HTML>

But it does not work: vResult is 0 after clicking the button. 但它不起作用:单击按钮后vResult为0。

Why it does not work? 为什么它不起作用?

The parameter type passed to ExecScriptEx must be an Integer in this case, not a string : 在这种情况下,传递给ExecScriptEx的参数类型必须是Integer ,而不是string

procedure TForm1.Button1Click(Sender: TObject);
var
  vResult: OleVariant;
  Para1: string;
  ParaInt: Integer;
begin
  //Para1 := '5'; // edPara.Text;
  ParaInt := 5;
  vResult := EmbeddedWB1.ExecScriptEx('evaluate', [ParaInt]);
  ShowMessage('Result from the Script: ' + IntToStr(vResult));
end;

Now it works! 现在它有效!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM