Class
MobileHTMLViewer
Description
A scrollable HTML viewer control.
Properties
Name |
Type |
Read-Only |
Shared |
---|---|---|---|
✓ |
|||
✓ |
|||
✓ |
|||
✓ |
|||
✓ |
|||
✓ |
|||
✓ |
|||
✓ |
Methods
Name |
Parameters |
Returns |
Shared |
---|---|---|---|
constraint As iOSLayoutConstraint |
|||
child As MobileUIControl |
|||
index As Integer |
|||
js As String |
|||
js As String |
|||
file As FolderItem |
|||
HTML As String |
|||
URL As String |
|||
constraint As iOSLayoutConstraint |
|||
child As MobileUIControl |
|||
Events
Name |
Parameters |
Returns |
---|---|---|
URL As String |
||
URL As String |
||
URL As String |
||
String |
||
url As String |
||
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