Sample code for 30+ languages & platforms
Visual FoxPro

JavaScript console using Callbacks

See more JavaScript Examples

Demonstrates console output using Chilkat JavaScript with callbacks.

Chilkat Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loSbScript
LOCAL loJs
LOCAL loResult

lnSuccess = 0

*  This example demonstrates using the built-in console object.
*  The Javascript run in this example is shown below.

*  Load the JavaScript from a file.
loSbScript = CreateObject('Chilkat.StringBuilder')
lnSuccess = loSbScript.LoadFile("qa_data/js_tests/test_console.js","utf-8")
IF (lnSuccess = 0) THEN
    ? loSbScript.LastErrorText
    RELEASE loSbScript
    CANCEL
ENDIF

loJs = CreateObject('Chilkat.Js')
jsEventHandler = CreateObject("jsEvents")
EventHandler(loJs,jsEventHandler)
loResult = CreateObject('Chilkat.JsonObject')

*  Run the JavaScript
*  Results (not console output) go to result.
*  Note: Eval returns the completion value of the script. This is generally the value of the last evaluated expression.
*  In this case, the last evaluated expression is console.log which does not calculate a value. Therefore, it returns undefined.
lnSuccess = loJs.Eval(loSbScript,loResult)
IF (lnSuccess = 0) THEN
    ? loSbScript.LastErrorText
    RELEASE loSbScript
    RELEASE loJs
    RELEASE loResult
    CANCEL
ENDIF

*  We can look at the result, which is "undefined", which is normal and expected.
? loResult.Emit()
*  The result JSON is: {"type":"undefined","value":"undefined"}

*  The console output is received using ProgressInfo callbacks.
*  The output is:

*  log: Hello World, 248, 12.05
*  
*  error: foo:bar baz
*  
*  warn: 1 2 3
*  
*  log: %% %s
*  
*  log: myApp: {
*    "appName": "Example",
*    "version": 1,
*    "isDebug": true,
*    "supportedTypes": [
*      "string",
*      "number",
*      "object"
*    ],
*    "settings": {
*      "maxWidgets": 1024,
*      "allowIO": true
*    }
*  }
*  
*  log: App: myApp (Version 1)
*  
*  {"type":"undefined","value":"undefined"}

RELEASE loSbScript
RELEASE loJs
RELEASE loResult

[K]DEFINE CLASS[/K] jsEvents [K]AS SESSION OLEPUBLIC[/K]
[K]IMPLEMENTS[/K] _IChilkatEvents [K]IN[/K] "Chilkat.Js"

[K]PROCEDURE[/K] _IChilkatEvents_AbortCheck(abort [K]As[/K] [K]Number[/K])
    [C]* Application code goes here...[/C]

[K]ENDPROC[/K]

[K]PROCEDURE[/K] _IChilkatEvents_BinaryData(data [K]As[/K] [K]Variant[/K])
    [C]* Application code goes here...[/C]

[K]ENDPROC[/K]

[K]PROCEDURE[/K] _IChilkatEvents_PercentDone(pctDone [K]As[/K] [K]Number[/K], abort [K]As[/K] [K]Number[/K])
    [C]* Application code goes here...[/C]

[K]ENDPROC[/K]

[K]PROCEDURE[/K] _IChilkatEvents_ProgressInfo(name [K]As[/K] [K]String[/K], value [K]As[/K] [K]String[/K])
    [C]* Application code goes here...[/C]
    ? name + ": " + value
[K]ENDPROC[/K]

[K]PROCEDURE[/K] _IChilkatEvents_TaskCompleted(task [K]As[/K] [K]Generic[/K])
    [C]* Application code goes here...[/C]

[K]ENDPROC[/K]

[K]PROCEDURE[/K] _IChilkatEvents_TextData(data [K]As[/K] [K]String[/K])
    [C]* Application code goes here...[/C]

[K]ENDPROC[/K]


[K]ENDDEFINE[/K]

JavaScript

// Chilkat Js console emits CRLF line endings on Windows, and LF line endings on non-Windows.

console.log("Hello %s, %d, %f", "World", 248, 12.05);
// Output: Hello World, 248, 12.05

// If there are more arguments than the number of specifiers, the extra arguments are output, separated by spaces:
console.error('%s:%s', 'foo', 'bar', 'baz');
// Output: foo:bar baz

// If the first argument does not contain a valid format specifier, outputs a string that is the concatenation of all arguments separated by spaces:
console.warn(1,2,3);
// Output: 1 2 3

//If only one argument is passed, it is returned as it is without any formatting:
console.log("%% %s");
// Output: %% %s

const myApp = {
    appName: "Example",
    version: 1.0,
    isDebug: true,
    supportedTypes: ["string", "number", "object"],
    settings: {
       "maxWidgets": 1024,
        allowIO: true
    }
};

// %O: Emits the same as JSON.stringify(myConfig, null, 2)
console.log("myApp: %O", myApp);
// Output:
// myApp: {
//   "appName": "Example",
//   "version": 1,
//   "isDebug": true,
//   "supportedTypes": [
//     "string",
//     "number",
//     "object"
//   ],
//   "settings": {
//     "maxWidgets": 1024,
//     "allowIO": true
//   }
// }

console.log("App: %s (Version %d)", myApp.appName, myApp.version);
// Output: App: Example (Version 1)