JS.eval
From GiderosMobile
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Available since: Gideros 2016.10
Class: JS
Description
Executes arbitrary JavaScript code on HTML5 platform.
JS.eval(code)
Parameters
code: (string) JavaScript code to execute
Examples
Get/set
JS.eval(localStorage.setItem('name', 'John'))
print(JS.eval(localStorage.getItem('name'))
Opens an url
JS.eval([[
window.open('my.url')
]])
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...
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
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:
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