TEmbeddedWB.ExecScriptEx 无法使用 JavaScript
TEmbeddedWB.ExecScriptEx not working with JavaScript
将 TMemo
、TEmbeddedWB
和 TButton
放在 Delphi VCL 窗体上。
这是来自表单单元的代码:
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;
这是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>
但是不起作用:vResult
点击按钮后为0
为什么不起作用?
在这种情况下,传递给 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;
现在可以了!
将 TMemo
、TEmbeddedWB
和 TButton
放在 Delphi VCL 窗体上。
这是来自表单单元的代码:
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;
这是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>
但是不起作用:vResult
点击按钮后为0
为什么不起作用?
在这种情况下,传递给 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;
现在可以了!