Difference between revisions of "JS.eval"
From GiderosMobile
m (Text replacement - "<source" to "<syntaxhighlight")  | 
				m (Text replacement - "</source>" to "</syntaxhighlight>")  | 
				||
| Line 7: | Line 7: | ||
<syntaxhighlight lang="lua">  | <syntaxhighlight lang="lua">  | ||
JS.eval(code)  | JS.eval(code)  | ||
| − | </  | + | </syntaxhighlight>  | 
=== Parameters ===  | === Parameters ===  | ||
| Line 17: | Line 17: | ||
JS.eval(localStorage.setItem('name', 'John'))  | JS.eval(localStorage.setItem('name', 'John'))  | ||
print(JS.eval(localStorage.getItem('name'))  | print(JS.eval(localStorage.getItem('name'))  | ||
| − | </  | + | </syntaxhighlight>  | 
| Line 25: | Line 25: | ||
	window.open('my.url')  | 	window.open('my.url')  | ||
]])  | ]])  | ||
| − | </  | + | </syntaxhighlight>  | 
| Line 38: | Line 38: | ||
else sysDark=0  | else sysDark=0  | ||
end  | end  | ||
| − | </  | + | </syntaxhighlight>  | 
You will end up with sysDark being -1 for 'don't know', 0 for 'light' and 1 for 'dark'.  | You will end up with sysDark being -1 for 'don't know', 0 for 'light' and 1 for 'dark'.  | ||
| Line 64: | Line 64: | ||
	end  | 	end  | ||
end  | end  | ||
| − | </  | + | </syntaxhighlight>  | 
{{JS}}  | {{JS}}  | ||
Latest revision as of 14:31, 13 July 2023
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