![]() |
Chilkat HOME Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi DLL Go Java JavaScript Node.js Objective-C PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Delphi ActiveX) Call a JavaScript Function Passing an Object ArgumentSee more JavaScript ExamplesDemonstrates how to call a JavaScript function with an argument that is an object.Note: This example requires Chilkat v11.4.0 or greater.
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Chilkat_TLB; ... procedure TForm1.Button1Click(Sender: TObject); var success: Integer; sbScript: TChilkatStringBuilder; js: TChilkatJs; result: TChilkatJsonObject; funcCall: TChilkatJsonObject; arg: TChilkatJsonObject; argsArray: TChilkatJsonArray; sbOut: TChilkatStringBuilder; begin success := 0; // This is the JavaScript function we'll call: // function describeCar(car) { // console.log(`This is a ${car.year} ${car.make} ${car.model}.`); // } sbScript := TChilkatStringBuilder.Create(Self); sbScript.Append('function describeCar(car) { console.log(`This is a ${car.year} ${car.make} ${car.model}.`); }'); js := TChilkatJs.Create(Self); result := TChilkatJsonObject.Create(Self); result.EmitCompact := 0; // Call Eval to add the function to the context's global object success := js.Eval(sbScript.ControlInterface,result.ControlInterface); if (success = 0) then begin // Examine the result for an exception. Memo1.Lines.Add(result.Emit()); // Also examine the LastErrorText. Memo1.Lines.Add(js.LastErrorText); Exit; end; // ------------------------------------------------------------------------------ // Call the function describeCar(car) funcCall := TChilkatJsonObject.Create(Self); funcCall.EmitCompact := 0; // Create JSON specifying the function name and arguments // In this case, there is only 1 argument, and it is an object. // { // "name": "describeCar", // "args": [ // { // "make": "Toyota", // "model": "Corolla", // "year": 2022 // } // ] // } funcCall.UpdateString('name','describeCar'); // Create the JSON object that is the argument. arg := TChilkatJsonObject.Create(Self); arg.UpdateString('make','Toyota'); arg.UpdateString('model','Corolla'); arg.UpdateInt('year',2022); // Create the arguments array. argsArray := TChilkatJsonArray.Create(Self); argsArray.AddObjectCopyAt(0,arg.ControlInterface); // Add the "args" array to the funcCall. funcCall.AppendArrayCopy('args',argsArray.ControlInterface); Memo1.Lines.Add(funcCall.Emit()); success := js.CallFunction(funcCall.ControlInterface,result.ControlInterface); if (success = 0) then begin // Examine the result for an exception. Memo1.Lines.Add(result.Emit()); // Also examine the LastErrorText. Memo1.Lines.Add(js.LastErrorText); Exit; end; Memo1.Lines.Add(result.Emit()); // The describeCar JavaScript function returns nothing. // Therefore, the result is "undefined". // { // "type": "undefined", // "value": "undefined" // } // However, the function emitted text to the console. sbOut := TChilkatStringBuilder.Create(Self); js.ConsoleOutputSb(sbOut.ControlInterface); Memo1.Lines.Add(sbOut.GetAsString()); // Output: // This is a 2022 Toyota Corolla. // ----------------------------------------------------------- // Note: If the object argument is simple, this is an alternative // and simpler way of creating the funcCall: funcCall.Clear(); funcCall.UpdateString('name','describeCar'); funcCall.UpdateString('args[0].make','Toyota'); funcCall.UpdateString('args[0].model','Corolla'); funcCall.UpdateInt('args[0].year',2022); Memo1.Lines.Add(funcCall.Emit()); end; |
||||
© 2000-2026 Chilkat Software, Inc. All Rights Reserved.