【问题标题】:TEmbeddedWB.ExecScriptEx not working with JavaScriptTEmbeddedWB.ExecScriptEx 不适用于 JavaScript
【发布时间】:2015-08-22 14:52:37
【问题描述】:

在 Delphi VCL 表单上放置 TMemoTEmbeddedWBTButton

这是来自表单单元的代码:

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。

为什么它不起作用?

【问题讨论】:

    标签: javascript delphi delphi-xe8 tembeddedwb


    【解决方案1】:

    在这种情况下,传递给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;
    

    现在可以了!

    【讨论】:

    • 有趣,因为当直接使用 JavaScript 时,实际上可以传递和使用非此即彼的。除了我想知道原因是否是因为'5' * '5' 无效......
    • @Jerry,是的,但你不能乘以字符串。
    • @TLama 是的,我刚刚发现。在我注意到return() 计算之前,我一直在关注alert()。我需要喝完咖啡:-/
    猜你喜欢
    • 1970-01-01
    • 2012-06-23
    • 1970-01-01
    • 1970-01-01
    • 2013-11-01
    • 2017-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多