Class page

Web process counterpart to the webview widget
This module is only available from web process Lua states.

The page is the web process counterpart to the webview widget; for each webview widget created on the UI process, a corresponding page instance is created in a web process.

Methods

page:eval_js (script, options)

Synchronously run a string of JavaScript code in the context of the webview. The JavaScript will run even if the enable_javascript property of the webview is false, as it is run within a separate JavaScript script world.

If the options parameter is provided, only the source key is recognized; if provided, it should be a string to use in error messages.

Parameters

  • script
    Type: string
    The JavaScript string to evaluate.
  • options
    Type: table
    Optional
    Default: {}
    Additional arguments.

Properties

page.uri

Type: string
Read-only
The current active URI of the page.

page.document

Type: dom_document
Read-only
The dom_document currently loaded in the page.

page.id

Type: integer
Read-only
Unique ID number associated with the web page.

A page and webview widget pair will always have the same ID; this is useful for coordinating Lua accross processes.

Signals

"document-loaded"

Emitted when the DOM document of the page has finished loading.

"send-request"

Emitted before every HTTP request is sent. By connecting to this signal one can redirect the request to a different URI, or block the request entirely. It is also possible to modify the HTTP headers sent with the request.

Redirecting a request to a different URI

To redirect a request to a different URI, return the new URI from your signal handler.

page:add_signal("send-request", function ()
    return "http://0.0.0.0/" -- Redirect everything to localhost
end)

Blocking a request

To block a request, return false.

page:add_signal("send-request", function (_, uri)
    if uri:match("^http:") then
        return false -- Block all http:// requests
    end
end)

Modifying HTTP headers

To modify the HTTP headers sent with the request, modify the headers table.

page:add_signal("send-request", function (_, _, headers)
    headers.Referer = nil -- Don't send Referer header
end)

Parameters

  • page
    Type: page
    The page.
  • uri
    Type: string
    The URI of the request.
  • headers
    Type: table
    The HTTP headers of the request.

Return Values

  • string or false
    A redirect URI, or false to block the request.

Attribution

Copyright