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