Class

MobileHTMLViewer


Description

A scrollable HTML viewer control.

Events

Name

Parameters

Returns

CancelLoad

URL As String

Boolean

Closing

DocumentBegin

URL As String

DocumentComplete

URL As String

DocumentProgressChanged

URL As String, PercentageComplete As Integer

Error

ErrorNumber As Integer, ErrorMessage As String

JavaScriptRequest

method As String, parameters() As Variant

String

NewWindow

url As String

MobileHTMLViewer

Opening

TitleChanged

NewTitle As String

Property descriptions


MobileHTMLViewer.AccessibilityHint

AccessibilityHint As String

The accessibility hint is a longer description that is read aloud when VoiceOver is enabled.

Me.AccessibilityHint = "Click to calculate the value and display the next screen."

MobileHTMLViewer.AccessibilityLabel

AccessibilityLabel As String

The accessibility label of of a control is a short name that is read aloud when VoiceOver is enabled.

Me.AccessibilityLabel = "Calculate the value."

MobileHTMLViewer.CanGoBack

CanGoBack As Boolean

If True, it indicates that there is a prior page that can be navigated to using GoBack.

This property is read-only.

This code in the DocumentComplete event handler disables a Back button if there is no prior page:

BackButton.Enabled = Me.CanGoBack

MobileHTMLViewer.CanGoForward

CanGoForward As Boolean

If True, it indicates that there is a next page that can be navigated to using GoForward.

This property is read-only.

This code in the DocumentComplete event handler disables a Forward button if there is no next page:

ForwardButton.Enabled = Me.CanGoForward

MobileHTMLViewer.ControlCount

ControlCount As Integer

The number of child controls in the control.

This property is read-only.


MobileHTMLViewer.Enabled

Enabled As Boolean

Indicates whether the control is enabled or disabled.

Disable the button:

Button1.Enabled = False

MobileHTMLViewer.Height

Height As Double

The height of the control.

This property is read-only.


MobileHTMLViewer.Left

Left As Double

The left position of the control.

This property is read-only.


MobileHTMLViewer.Name

Name As String

The name of the control.


MobileHTMLViewer.Parent

Parent As MobileUIControl

The parent (sometimes called a "Super") class of the control.

This property is read-only.


MobileHTMLViewer.TintColor

TintColor As ColorGroup

Changes a control's tint color.

On iOS, the following controls support TintColor:

Enum

Description

ProgressBar

The area indicating the value of the control will be drawn in the TintColor.

Slider

The area indicating the value of the control will be drawn in the TintColor.

TextArea

The cursor and text highlight color will be drawn in the TintColor.

TextField

The cursor and text highlight color will be drawn in the TintColor.


MobileHTMLViewer.Top

Top As Double

The top position of the control.

This property is read-only.


MobileHTMLViewer.Visible

Visible As Boolean

Indicates whether the control is visible.

Make a button invisible:

Button1.Visible = False

MobileHTMLViewer.Width

Width As Double

The width of the control.

This property is read-only.

Method descriptions


MobileHTMLViewer.AddConstraint

AddConstraint(constraint As iOSLayoutConstraint)

Adds a constraint to the control.

This constraint is used by child controls that have been added to this control.


MobileHTMLViewer.AddControl

AddControl(child As MobileUIControl)

Adds a child control to the control.


MobileHTMLViewer.Cancel

Cancel

Cancels any current operations.

Me.Cancel

MobileHTMLViewer.ClearFocus

ClearFocus

Removes the focus from the control.

TextField1.ClearFocus

MobileHTMLViewer.ControlAt

ControlAt(index As Integer) As MobileUIControl

Gets the child control at the specified index.


MobileHTMLViewer.Controls

Controls As Iterable

Allows you to iterate through all the controls that have been added to this control.


MobileHTMLViewer.ExecuteJavaScript

ExecuteJavaScript(js As String)

Asynchronously executes the passed JavaScript in the context of the currently loaded page.

Attempting to execute JavaScript before the page finishes loading (or if no page is loaded) is undefined and is unlikely to work.

This code will populate the search field on the wikipedia page (assuming it was previously loaded):

Var jsSrc As String
jsSrc = "document.forms[0].elements['search'].value=""xojo"";"
HTMLViewer1.ExecuteJavaScript(jsSrc)

This code writes text to the HTML document:

Var this As String
this = "document.writeln(""hello"");"
HTMLViewer1.ExecuteJavaScript(this)

MobileHTMLViewer.ExecuteJavaScriptSync

ExecuteJavaScriptSync(js As String) As Variant

Synchronously executes the passed JavaScript in the context of the currently loaded page and returns the result. Only strings and numbers may be returned.

Attempting to execute JavaScript before the page finishes loading (or if no page is loaded) is undefined and is unlikely to work.


MobileHTMLViewer.GoBack

GoBack

Navigates to the prior page.

On a back button Pressed event handler, you can write:

HTMLViewer1.GoBack

MobileHTMLViewer.GoForward

GoForward

Navigates to the next page.

On a forward button Pressed event handler, you can write:

HTMLViewer1.GoForward

MobileHTMLViewer.Handle

Handle As Ptr

The a handle to the underlying native OS control.


MobileHTMLViewer.LoadPage

LoadPage(file As FolderItem)

Displays the HTML passed.


MobileHTMLViewer.LoadPage

LoadPage(HTML As String)

Displays the HTML passed.

iOS sandboxing of the app and the HTML Viewer can prevent the HTML Viewer from seeing files that are in the app's Documents folder. This code can be used to provide access to files in the Documents folder:

Declare Function NSClassFromString Lib "Foundation.framework" (clsName As CFStringRef) As ptr
Declare Function URLWithString Lib "Foundation.framework" Selector "URLWithString:" ( id As Ptr, URLString As CFStringRef ) As Ptr

Declare Sub loadFileURL Lib "UIKit.framework" Selector "loadFileURL:allowingReadAccessToURL:" (obj As Ptr, url As Ptr, readAccessURL As Ptr)

// htmlFile is a FolderItem from SpecialFolder.Documents
Var nsURL As Ptr = URLWithString(NSClassFromString("NSURL"), htmlFile.URLPath)
Var readURL As Ptr = URLWithString(NSClassFromString("NSURL"), htmlFile.parent.URLPath)

loadFileURL(HTMLViewer1.Handle, nsURL, readURL) // Display the contents in an MobileHTMLViewer

MobileHTMLViewer.LoadURL

LoadURL(URL As String)

Displays the specified URL.

Be sure to include the appropriate prefix, such as "https://".

To load HTML from a file on the device or to load HTML as a String directly, use LoadPage.

Display wikipedia:

HTMLViewer1.LoadURL("https://www.wikipedia.org")

MobileHTMLViewer.Refresh

Refresh

Marks the control so that it will be redrawn during the next event loop.

Call Refresh to force a Canvas to redraw itself:

Canvas1.Refresh

MobileHTMLViewer.RemoveConstraint

RemoveConstraint(constraint As iOSLayoutConstraint)

Removes a constraint from the control.


MobileHTMLViewer.RemoveControl

RemoveControl(child As MobileUIControl)

Removes the control from the control.


MobileHTMLViewer.SetFocus

SetFocus

Sets the focus to the control.

TextField1.SetFocus

Event descriptions


MobileHTMLViewer.CancelLoad

CancelLoad(URL As String) As Boolean

Returns a Boolean. Return True to cancel loading the page.


MobileHTMLViewer.Closing

Closing

Called when the control's layout is closing.


MobileHTMLViewer.DocumentBegin

DocumentBegin(URL As String)

Fires when the HTML page is starting to load.


MobileHTMLViewer.DocumentComplete

DocumentComplete(URL As String)

Called when the HTML page is finished loading.


MobileHTMLViewer.DocumentProgressChanged

DocumentProgressChanged(URL As String, PercentageComplete As Integer)

Fires when the progress has been updated. If percentageComplete is -1, the percentage cannot be determined.


MobileHTMLViewer.Error

Error(ErrorNumber As Integer, ErrorMessage As String)

Fires when an error occurs.

The errors you receive are the standard HTTP Status Codes.


MobileHTMLViewer.JavaScriptRequest

JavaScriptRequest(method As String, parameters() As Variant) As String

Called when a JavaScript executed via ExecuteJavaScript or ExecuteJavaScriptSync calls ExecuteInXojo or ExecuteInXojoSync.

A JavaScript executed via ExecuteJavaScript or ExecuteJavaScriptSync can call executeInXojo() or executeInXojoSync() to pass data back to the HTMLViewer via this event. Both can be passed any number of parameters though the first parameter must be a string. For all subsequent parameters, only strings and numbers are supported. The executeInXojo() method is asynchronous and thus will not receive a value returned by this event. The executeInXojoSync() method is synchronous and thus should be called as a function as it will receive the value returned by this event.


MobileHTMLViewer.NewWindow

NewWindow(URL As String) As MobileHTMLViewer

Called when the HTML on page requests that a URL be opened in a new HTML viewer.

Return an instance of an HTMLViewer to load the page in that viewer or Return Nil if you do not want to allow URL to open at all.


MobileHTMLViewer.Opening

Opening

Called when the control's layout is opening.

This is where you typically put initialization code.

This example in the Opening event of a label sets its text to "Hello":

Me.Text = "Hello"

MobileHTMLViewer.TitleChanged

TitleChanged(newTitle As String)

Fires when the Title of the Web page has been determined or has changed.

The renderer, which varies by OS, determines the maximum number of characters that are returned in NewTitle. You should test this in your projects to determine a maximum number of characters, keeping in mind that this could change at any time due to the underlying renderer and operating system.

Notes

iOS requires the use of secure "https" connections or the page will not display.

Compatibility

Mobile projects on all supported mobile operating systems.

See also

MobileUIControl parent class; URLConnection class