Jump to content
View in the app

A better way to browse. Learn more.

FMForums.com

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Featured Replies

You may know our JavaScriptWebKit functions for macOS and iOS. But with the upcoming 13.1 release, you can use those functions on Windows and Linux, too. It's up to you to provide the library, so we go through this step by step for Linux. Here is the screenshot with the trace output on Linux:

LinuxJavaScript.jpg

You should have a recent FileMaker Server installed on Linux with Ubuntu in a recent version. Please open a terminal connection either by doing so on the server directly or via ssh connection.

First we go to refresh the package directory on Linux by running the following command:

sudo apt-get update

Next we can search JavaScript Core library:

apt-cache search javascriptcore

Which may find packages like "libjavascriptcoregtk-4.0-bin". The exact version doesn't matter and you may find 4.0 or 4.1 here. Next we install the package we found:

sudo apt-get install libjavascriptcoregtk-4.0-bin

Now you should find a libjavascriptcoregtk-4.0.so.18 file in /usr/lib/x86_64-linux-gnu (or /usr/lib/aarch64-linux-gnu) and you construct the path for later:

/usr/lib/x86_64-linux-gnu/libjavascriptcoregtk-4.0.so.18

Since we don't want to run blind, we call MBS("Trace") in the script on the top. And then we run tail command in a Terminal window connected to our linux server to see live logs:

tail -f /opt/FileMaker/FileMaker\ Server/Logs/StdErrServerScripting.log

We build a test script like the one here:

Set Variable [ $r ; Value: MBS("Trace") & MBS("Version") ] 
# 
# load library if needed
If [ MBS( "JavaScript.Available" ) = 0 and MBS("IsLinux") ] 
	Set Variable [ $r ; Value: MBS("JavaScript.LoadLibrary"; "/usr/lib/x86_64-linux-gnu/libjavascriptcoregtk-4.0.so.18") ] 
	If [ MBS("IsError") ] 
		Exit Script [ Text Result: $r ] 
	End If
End If
# 
# Start a new JavaScript session
Set Variable [ $js ; Value: MBS("JavaScript.New") ] 
If [ MBS("IsError") ] 
	Exit Script [ Text Result: $js ] 
End If
# 
# use JavaScript
Set Variable [ $result ; Value: MBS("JavaScript.EvaluateScript"; $js; "const greeting = ' Hello world! '; greeting.trimStart();") ] 
# 
# cleanup
Set Variable [ $r ; Value: MBS("JavaScript.Release"; $js) ] 
Exit Script [ Text Result: $result ] 

Now we can run this via Perform Script on Server. The JavaScript.LoadLibrary function loads the library the first time you use the function. If that doesn't produce an error like an invalid path, we can continue. We start a new JavaScript session and then do various things on it like running scripts, get and set global properties or call a function. 

 

The initialization needs only to run first time you use JavaScript, so you may do that in a script triggered from your start script (on first window open). The JavaScript engine can stay alive for longer, like from user opening your solution to the user ending the solution to do various JavaScript tasks over time.

 

If you like to try to use this on Windows, you may need to find a JavaScriptCore.dll and all related DLLs it references. 

Alternatively check our JavaScript functions using Duktape as local JavaScript engine, which also runs cross platform on client and server.

 

Please try it and let us know how it works for you.

Create an account or sign in to comment

Important Information

By using this site, you agree to our Terms of Use.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.