JS.eval

From GiderosMobile
Revision as of 15:28, 13 July 2023 by Hgy29 (talk | contribs) (Text replacement - "<source" to "<syntaxhighlight")

Available since: Gideros 2016.10
Class: JS

Description

Executes arbitrary JavaScript code on HTML5 platform. <syntaxhighlight lang="lua"> JS.eval(code) </source>

Parameters

code: (string) JavaScript code to execute

Examples

Get/set <syntaxhighlight lang="lua"> JS.eval(localStorage.setItem('name', 'John')) print(JS.eval(localStorage.getItem('name')) </source>


Opens an url <syntaxhighlight lang="lua"> JS.eval([[ window.open('my.url') ]]) </source>


In your html5 exports use this to detect if you are in light or dark mode - to change your app or game colors to suit... <syntaxhighlight lang="lua"> sysDark=-1

-- device={application:getDeviceInfo()} -- device[1]=="Web" -- only do the next line if html5 export if JS.eval("window.matchMedia('(prefers-color-scheme:dark)').matches")=="true" then sysDark=1 else sysDark=0 end </source> You will end up with sysDark being -1 for 'don't know', 0 for 'light' and 1 for 'dark'.


Sometimes you may not want the user to leave the game without giving a warning that they will lose information, here is code that will allow you to do this on html5 exports: <syntaxhighlight lang="lua"> if JS then JS.eval([[ window.saveWarning=false; window.saveWarningListener = (e) => { if (window.saveWarning==true) { e.preventDefault(); e.returnValue=; } }; window.addEventListener('beforeunload', saveWarningListener); ]]) end

function saveWarning(f) if JS then if f then JS.eval("window.saveWarning=true;") else JS.eval("window.saveWarning=false;") end end end </source>