Web View Module
Web View Module - webview
Display a Web View (webview.show)
Declaration
webview.show { -- All parameters are optional
id = view_id,
html = html_content,
x = origin_x_coordinate,
y = origin_y_coordinate,
width = width,
height = height,
corner_radius = corner_radius,
alpha = opacity,
animation_duration = animation_duration,
rotate = rotation_angle,
level = window_level,
opaque = opaque_range,
ignores_hit = ignore_touch_events,
can_drag = draggable,
}
Field Description
- view_id
- integer, optional, different View IDs can be used to display multiple Web Views simultaneously. The range is 1 ~ 1000, default is
1
.
- integer, optional, different View IDs can be used to display multiple Web Views simultaneously. The range is 1 ~ 1000, default is
- html_content
- string, optional, defaults to the content set during the last call to
webview.show
.
- string, optional, defaults to the content set during the last call to
- origin_x_coordinate
- integer, optional, distance from the left side of the screen. Default is
0
.
- integer, optional, distance from the left side of the screen. Default is
- origin_y_coordinate
- integer, optional, distance from the top of the screen. Default is
0
.
- integer, optional, distance from the top of the screen. Default is
- width
- integer, optional, defaults to screen width.
- height
- integer, optional, defaults to screen height.
- opacity
- float, optional, range is 0.0 ~ 1.0. Default is
1.0
.
- float, optional, range is 0.0 ~ 1.0. Default is
- corner_radius
- float, optional, default is
0.0
.
- float, optional, default is
- animation_duration
- float, optional, animation duration from the last state to the current state. Default is
0.0
.
- float, optional, animation duration from the last state to the current state. Default is
- rotation_angle float, optional
- Portrait:
0.0
, default value. - Landscape with Home on the right:
90.0
. - Upside-down portrait:
180.0
. - Landscape with Home on the left:
270.0
.
- Portrait:
- window_level
- float, optional, default is
1100.0
.
- float, optional, default is
- opaque_range
- boolean, optional, default is
true
, meaning the background is opaque.
- boolean, optional, default is
- ignore_touch_events
- boolean, optional, default is
false
, meaning touch events are not ignored. This property cannot be changed after the Web View is created.
- boolean, optional, default is
- draggable
- boolean, optional, default is
false
, meaning it cannot be dragged.
- boolean, optional, default is
Description
Displays a WebView on the screen with the specified parameters. If the WebView is already displayed, its parameters will be updated.
The orientation of the WebView defaults to the orientation set by the last call to screen.init
.
Example for this section
Hide a Web View (webview.hide)
Declaration
webview.hide([ view_id ])
Parameters and Return Values
- View ID
- integer, optional, default is
1
.
- integer, optional, default is
Description
Temporarily hides a Web View.
Example for this section
Execute JavaScript on a Web View (webview.eval)
Declaration
result_text = webview.eval(js_text[, view_id])
Parameters and Return Values
- JS Text
- string, JavaScript code to execute.
- View ID
- integer, optional, default is
1
.
- integer, optional, default is
- Result Text
- string, returns the result of the executed code.
Description
Executes a JavaScript snippet on a Web View and retrieves the result as text.
Example
webview.eval
r = webview.eval("a = 3; b = 2; a * b;")
Get the Frame and Level Information of a Web View (webview.frame)
Declaration
frame_info = webview.frame([ view_id ])
Parameters and Return Values
- view_id
- integer, optional, default is
1
.
- integer, optional, default is
- frame_info associative table
Example
webview.frame
local frame = webview.frame()
sys.alert(
"Position: " .. "(" .. frame.x .. "," .. frame.y .. ")\n" ..
"Size: " .. "(w: " .. frame.width .. ", h: " .. frame.height .. ")\n" ..
"Level: " .. "(" .. frame.level .. ")"
)
Destroy a Web View (webview.destroy)
Declaration
webview.destroy([ view_id ])
Parameters and Return Values
- view_id
- integer, optional, default is
1
.
- integer, optional, default is
info
When the script ends, all displayed Web Views will be automatically destroyed.
Example for this section
Example Code
webview.demo
require("thread")(function () -- Enable thread module
local html = [==[
<!DOCTYPE html>
<html>
<head>
<script src="/js/jquery.min.js"></script>
<script src="/js/jquery.json.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#toast_content").val("Toast Content");
$("#close_page").click(function() {
$.post("/proc_queue_push", '{"key": "Message from Web View","value": "Close Page"}', function() {});
});
$("#show_toast").click(function() {
$.post("/proc_put", $.toJSON({
key: "Toast Content",
value: $("#toast_content").val()
}), function() {});
$.post("/proc_queue_push", '{"key": "Message from Web View","value": "Show Toast"}', function() {});
});
$("#slide_down").click(function() {
$.post("/proc_queue_push", '{"key": "Message from Web View","value": "Slide Down"}', function() {});
$(this).hide();
});
$("#full_vertical").click(function() {
$.post("/proc_queue_push", '{"key": "Message from Web View","value": "Full Vertical"}', function() {});
});
$("#full_landscape").click(function() {
$.post("/proc_queue_push", '{"key": "Message from Web View","value": "Full Landscape"}', function() {});
});
});
</script>
</head>
<body>
<p>Dynamic Web View Demo</p>
<p>
<button id="close_page" type="button">Click to Close Page</button>
</p>
<p>
<button id="show_toast" type="button">Show a Toast</button>
<input type="text" id="toast_content" />
</p>
<p>
<button id="full_vertical" type="button">Full Vertical</button>
<button id="full_landscape" type="button">Full Landscape</button>
</p>
<p>
<button id="slide_down" type="button">Slide View Down</button>
</p>
<select>
<option value="o1">Option 1</option>
<option value="o2">Option 2</option>
<option value="o3">Option 3</option>
<option value="o4">Option 4</option>
</select>
</body>
</html>
]==]
--
local w, h = screen.size()
--
local factor = 1 -- Default height for 2x devices
if w == 1242 or w == 1080 then
factor = 1.5 -- iPhone 6S Plus resolution is 3x
elseif w == 320 or w == 768 then
factor = 0.5 -- Pre-iPhone 3Gs resolution is 1x
end
--
webview.show { -- Reset Web View position to top-left corner
x = 0,
y = 0,
width = w - 40 * factor,
height = (500) * factor,
alpha = 0,
animation_duration = 0,
}
--
webview.show { -- Slide out from top-left corner in 0.3 seconds
html = html,
x = 20 * factor,
y = 50 * factor,
width = (w - 40 * factor),
height = (500) * factor,
corner_radius = 10,
alpha = 0.7,
animation_duration = 0.3,
}
--
proc.queue_clear("Message from Web View", "") -- Clear dictionary values to listen for
local eid = thread.register_event( -- Register event to listen for dictionary state changes
"Message from Web View",
function(val)
if val == "Close Page" then
webview.show {
x = 20 * factor,
y = 500 * factor * 2,
width = (w - 40 * factor),
height = (500 - 70) * factor,
corner_radius = 10,
alpha = 0,
animation_duration = 0.8,
}
sys.msleep(800)
webview.destroy()
sys.toast("Page thread ended")
return true -- Return true to stop current listener
elseif val == "Slide Down" then
webview.show {
x = 20 * factor,
y = (50 + 300) * factor, -- Y coordinate + 300
width = (w - 40 * factor),
height = (500 - 70) * factor, -- Adjust height as slide down button is hidden
corner_radius = 10,
alpha = 0.7,
animation_duration = 0.5, -- Duration 0.5 seconds
}
elseif val == "Full Vertical" then
webview.show {} -- Set Web View to full screen
elseif val == "Full Landscape" then
webview.show { rotate = 90 } -- Set Web View to full landscape
elseif val == "Show Toast" then
sys.toast(proc.get("Toast Content"))
end
end
)
--
sys.msleep(3000)
sys.toast("Main thread ended")
end)