Difference between revisions of "JS.eval"

From GiderosMobile
(added another example!)
m (Text replacement - "<source" to "<syntaxhighlight")
Line 5: Line 5:
 
=== Description ===
 
=== Description ===
 
Executes arbitrary JavaScript code on HTML5 platform.
 
Executes arbitrary JavaScript code on HTML5 platform.
<source lang="lua">
+
<syntaxhighlight lang="lua">
 
JS.eval(code)
 
JS.eval(code)
 
</source>
 
</source>
Line 14: Line 14:
 
=== Examples ===
 
=== Examples ===
 
'''Get/set'''
 
'''Get/set'''
<source lang="lua">
+
<syntaxhighlight lang="lua">
 
JS.eval(localStorage.setItem('name', 'John'))
 
JS.eval(localStorage.setItem('name', 'John'))
 
print(JS.eval(localStorage.getItem('name'))
 
print(JS.eval(localStorage.getItem('name'))
Line 21: Line 21:
  
 
'''Opens an url'''
 
'''Opens an url'''
<source lang="lua">
+
<syntaxhighlight lang="lua">
 
JS.eval([[
 
JS.eval([[
 
window.open('my.url')
 
window.open('my.url')
Line 29: Line 29:
  
 
'''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...'''
 
'''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...'''
<source lang="lua">
+
<syntaxhighlight lang="lua">
 
sysDark=-1
 
sysDark=-1
 
   
 
   
Line 43: Line 43:
  
 
'''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:'''
 
'''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:'''
<source lang="lua">
+
<syntaxhighlight lang="lua">
 
if JS then
 
if JS then
 
JS.eval([[
 
JS.eval([[

Revision as of 14:28, 13 July 2023

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>