JS.eval

From GiderosMobile
Revision as of 05:38, 8 September 2021 by MoKaLux (talk | contribs) (added examples)

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

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