WebView
class cAlgo.API
DesktopCLICloud
Represents the web view control.
Environment behaviour
CLI — not supported. Accepted without error but never displayed, so control events such as Click are never raised.
Cloud — not supported. Accepted without error but never displayed, so control events such as Click are never raised.
Definition
public class WebView : ControlBase
Namespace: cAlgo.API · Group: Controls · Inherits: ControlBase
Examples
Example 1
using cAlgo.API;
namespace cAlgo.Robots
{
public partial class WebViewOnChart : Robot
{
private WebView _webView;
private TextBox _addressTextBox;
private TextBox _scriptTextBox;
private Button _executeScriptButton;
protected override void OnStart()
{
var goBackButton = new Button
{
Text = "←",
Margin = 3
};
goBackButton.Click += OnGoBackButtonClick;
var goForwardButton = new Button
{
Text = "→",
Margin = 3
};
goForwardButton.Click += OnGoForwardButtonClick;
_addressTextBox = new TextBox
{
Text = "https://ctrader.com/",
Margin = 3,
Width = 150,
MinWidth = 150,
MaxWidth = 150
};
var goButton = new Button
{
Text = "→",
Margin = 3
};
goButton.Click += OnGoButtonClick;
var reloadButton = new Button
{
Text = "Reload",
Margin = 3
};
reloadButton.Click += OnReloadButtonClick;
var stopButton = new Button
{
Text = "x",
Margin = 3
};
stopButton.Click += OnStopButtonClick;
_scriptTextBox = new TextBox
{
Text = "alert('Hi');",
Margin = 3,
Width = 150,
MinWidth = 150,
MaxWidth = 150,
IsEnabled = false
};
_executeScriptButton = new Button
{
Text = "Execute Script",
Margin = 3,
IsEnabled = false
};
_executeScriptButton.Click += OnExecuteScriptButtonClick;
var addressBarPanel = new StackPanel
{
MaxHeight = 50,
VerticalAlignment = VerticalAlignment.Top,
BackgroundColor = Color.Black,
Orientation = Orientation.Horizontal
};
addressBarPanel.AddChild(goBackButton);
addressBarPanel.AddChild(goForwardButton);
addressBarPanel.AddChild(_addressTextBox);
addressBarPanel.AddChild(goButton);
addressBarPanel.AddChild(reloadButton);
addressBarPanel.AddChild(stopButton);
addressBarPanel.AddChild(_scriptTextBox);
addressBarPanel.AddChild(_executeScriptButton);
_webView = new WebView
{
DefaultBackgroundColor = Color.Red
};
_webView.NavigationCompleted += OnWebViewNavigationCompleted;
_webView.WebMessageReceived += OnWebViewWebMessageReceived;
_webView.Loaded += OnWebViewLoaded;
_webView.Unloaded += OnWebViewUnloaded;
var mainGrid = new Grid(2, 1);
mainGrid.Rows[0].SetHeightToAuto();
mainGrid.Rows[1].SetHeightInStars(1);
mainGrid.AddChild(addressBarPanel, 0, 0);
mainGrid.AddChild(_webView, 1, 0);
Chart.AddControl(mainGrid);
_webView.NavigateAsync(_addressTextBox.Text);
}
private void OnWebViewLoaded(WebViewLoadedEventArgs args)
{
Print($"Webview loaded, IsLoaded: {args.WebView.IsLoaded}");
}
private void OnWebViewUnloaded(WebViewUnloadedEventArgs args)
{
Print($"Webview unloaded, IsLoaded: {args.WebView.IsLoaded}");
}
private void OnStopButtonClick(ButtonClickEventArgs args)
{
_webView.StopAsync();
}
private void OnExecuteScriptButtonClick(ButtonClickEventArgs args)
{
var result = _webView.ExecuteScript(_scriptTextBox.Text);
Print($"IsSuccessful: {result.IsSuccessful} | Json: {result.Json}");
}
private void OnReloadButtonClick(ButtonClickEventArgs args)
{
_webView.ReloadAsync();
}
private void OnGoForwardButtonClick(ButtonClickEventArgs args)
{
_webView.GoForwardAsync();
}
private void OnGoBackButtonClick(ButtonClickEventArgs args)
{
_webView.GoBackAsync();
}
private void OnGoButtonClick(ButtonClickEventArgs args)
{
_webView.NavigateAsync(_addressTextBox.Text);
}
private void OnWebViewWebMessageReceived(WebViewWebMessageReceivedEventArgs args)
{
Print($"Source: {args.Source} | Message: {args.Message}");
}
private void OnWebViewNavigationCompleted(WebViewNavigationCompletedEventArgs args)
{
Print($"{args.HttpStatusCode} | {args.IsSuccessful} | {args.Url}");
_addressTextBox.Text = args.Url;
_scriptTextBox.IsEnabled = true;
_executeScriptButton.IsEnabled = true;
}
}
}
import clr
clr.AddReference("cAlgo.API")
# Import cAlgo API types
from cAlgo.API import *
# Import trading wrapper functions
from robot_wrapper import *
class Test():
def on_go_back_button_clicked(self, args):
self.webView.GoBackAsync()
def on_go_forward_button_clicked(self, args):
self.webView.GoForwardAsync()
def on_go_button_clicked(self, args):
self.webView.NavigateAsync(self.addressTextBox.Text)
def on_reload_button_clicked(self, args):
self.webView.ReloadAsync()
def on_stop_button_clicked(self, args):
self.webView.StopAsync()
def on_execute_script_button_clicked(self, args):
result = self.webView.ExecuteScript(self.scriptTextBox.Text)
api.Print(f"IsSuccessful: {result.IsSuccessful} | Json: {result.Json}")
def on_web_view_navigation_completed(self, args):
api.Print(f"{args.HttpStatusCode} | {args.IsSuccessful} | {args.Url}")
self.addressTextBox.Text = args.Url
self.scriptTextBox.IsEnabled = True
self.executeScriptButton.IsEnabled = True
def on_start(self):
goBackButton = Button()
goBackButton.Text = "←"
goBackButton.Margin = Thickness(3)
goBackButton.Click += self.on_go_back_button_clicked
goForwardButton = Button()
goForwardButton.Text = "→"
goForwardButton.Margin = Thickness(3)
goForwardButton.Click += self.on_go_forward_button_clicked
self.addressTextBox = TextBox()
self.addressTextBox.Text = "https://ctrader.com/"
self.addressTextBox.Margin = Thickness(3)
self.addressTextBox.Width = 150
self.addressTextBox.MinWidth = 150
self.addressTextBox.MaxWidth = 150
goButton = Button()
goButton.Text = "→"
goButton.Margin = Thickness(3)
goButton.Click += self.on_go_button_clicked
reloadButton = Button()
reloadButton.Text = "Reload"
reloadButton.Margin = Thickness(3)
reloadButton.Click += self.on_reload_button_clicked
stopButton = Button()
stopButton.Text = "x"
stopButton.Margin = Thickness(3)
stopButton.Click += self.on_stop_button_clicked
self.scriptTextBox = TextBox()
self.scriptTextBox.Text = "alert('Hi')"
self.scriptTextBox.Margin = Thickness(3)
self.scriptTextBox.Width = 150
self.scriptTextBox.MinWidth = 150
self.scriptTextBox.MaxWidth = 150
self.scriptTextBox.IsEnabled = False
self.executeScriptButton = Button()
self.executeScriptButton.Text = "Execute Script"
self.executeScriptButton.Margin = Thickness(3)
self.executeScriptButton.IsEnabled = False
self.executeScriptButton.Click += self.on_execute_script_button_clicked
addressBarPanel = StackPanel()
addressBarPanel.MaxHeight = 50
addressBarPanel.VerticalAlignment = VerticalAlignment.Top
addressBarPanel.BackgroundColor = Color.Black
addressBarPanel.Orientation = Orientation.Horizontal
addressBarPanel.AddChild(goBackButton)
addressBarPanel.AddChild(goForwardButton)
addressBarPanel.AddChild(self.addressTextBox)
addressBarPanel.AddChild(goButton)
addressBarPanel.AddChild(reloadButton)
addressBarPanel.AddChild(stopButton)
addressBarPanel.AddChild(self.scriptTextBox)
addressBarPanel.AddChild(self.executeScriptButton)
self.webView = WebView()
self.webView.DefaultBackgroundColor = Color.Red
self.webView.NavigationCompleted += self.on_web_view_navigation_completed
self.webView.WebMessageReceived += lambda args: api.Print(f"Source: {args.Source} | Message: {args.Message}")
self.webView.Loaded += lambda args: api.Print(f"Webview loaded, IsLoaded: {args.WebView.IsLoaded}")
self.webView.Unloaded += lambda args: api.Print(f"Webview unloaded, IsLoaded: {args.WebView.IsLoaded}")
self.webView.NavigateAsync(self.addressTextBox.Text)
mainGrid = Grid(2, 1)
mainGrid.Rows[0].SetHeightToAuto()
mainGrid.Rows[1].SetHeightInStars(1)
mainGrid.AddChild(addressBarPanel, 0, 0)
mainGrid.AddChild(self.webView, 1, 0)
api.Chart.AddControl(mainGrid)
{
"AccessRights": "None"
}
Example 2
using cAlgo.API;
namespace cAlgo.Robots
{
public partial class WebViewOnWindow : Robot
{
private WebView _webView;
private TextBox _addressTextBox;
private TextBox _scriptTextbox;
private Button _executeScriptButton;
protected override void OnStart()
{
var goBackButton = new Button
{
Text = "←",
Margin = 3
};
goBackButton.Click += OnGoBackButtonClick;
var goForwardButton = new Button
{
Text = "→",
Margin = 3
};
goForwardButton.Click += OnGoForwardButtonClick;
_addressTextBox = new TextBox
{
Text = "https://ctrader.com/",
Margin = 3,
Width = 150,
MinWidth = 150,
MaxWidth = 150
};
var goButton = new Button
{
Text = "→",
Margin = 3
};
goButton.Click += OnGoButtonClick;
var reloadButton = new Button
{
Text = "Reload",
Margin = 3
};
reloadButton.Click += OnReloadButtonClick;
var stopButton = new Button
{
Text = "x",
Margin = 3
};
stopButton.Click += OnStopButtonClick;
_scriptTextbox = new TextBox
{
Text = "alert('Hi');",
Margin = 3,
Width = 150,
MinWidth = 150,
MaxWidth = 150,
IsEnabled = false
};
_executeScriptButton = new Button
{
Text = "Execute Script",
Margin = 3,
IsEnabled = false
};
_executeScriptButton.Click += OnExecuteScriptButtonClick;
var addressBarPanel = new StackPanel
{
MaxHeight = 50,
VerticalAlignment = VerticalAlignment.Top,
BackgroundColor = Color.Black,
Orientation = Orientation.Horizontal
};
addressBarPanel.AddChild(goBackButton);
addressBarPanel.AddChild(goForwardButton);
addressBarPanel.AddChild(_addressTextBox);
addressBarPanel.AddChild(goButton);
addressBarPanel.AddChild(reloadButton);
addressBarPanel.AddChild(stopButton);
addressBarPanel.AddChild(_scriptTextbox);
addressBarPanel.AddChild(_executeScriptButton);
_webView = new WebView
{
DefaultBackgroundColor = Color.Red
};
_webView.NavigationCompleted += OnWebViewNavigationCompleted;
_webView.WebMessageReceived += OnWebViewWebMessageReceived;
_webView.Loaded += OnWebViewLoaded;
_webView.Unloaded += OnWebViewUnloaded;
var mainGrid = new Grid(2, 1);
mainGrid.Rows[0].SetHeightToAuto();
mainGrid.Rows[1].SetHeightInStars(1);
mainGrid.AddChild(addressBarPanel, 0, 0);
mainGrid.AddChild(_webView, 1, 0);
var window = new Window
{
Child = mainGrid
};
window.Show();
_webView.NavigateAsync(_addressTextBox.Text);
}
private void OnWebViewLoaded(WebViewLoadedEventArgs args)
{
Print($"Webview loaded, IsLoaded: {args.WebView.IsLoaded}");
}
private void OnWebViewUnloaded(WebViewUnloadedEventArgs args)
{
Print($"Webview unloaded, IsLoaded: {args.WebView.IsLoaded}");
}
private void OnStopButtonClick(ButtonClickEventArgs args)
{
_webView.StopAsync();
}
private void OnExecuteScriptButtonClick(ButtonClickEventArgs args)
{
var result = _webView.ExecuteScript(_scriptTextbox.Text);
Print($"IsSuccessful: {result.IsSuccessful} | Json: {result.Json}");
}
private void OnReloadButtonClick(ButtonClickEventArgs args)
{
_webView.ReloadAsync();
}
private void OnGoForwardButtonClick(ButtonClickEventArgs args)
{
_webView.GoForwardAsync();
}
private void OnGoBackButtonClick(ButtonClickEventArgs args)
{
_webView.GoBackAsync();
}
private void OnGoButtonClick(ButtonClickEventArgs args)
{
_webView.NavigateAsync(_addressTextBox.Text);
}
private void OnWebViewWebMessageReceived(WebViewWebMessageReceivedEventArgs args)
{
Print($"Source: {args.Source} | Message: {args.Message}");
}
private void OnWebViewNavigationCompleted(WebViewNavigationCompletedEventArgs args)
{
Print($"{args.HttpStatusCode} | {args.IsSuccessful} | {args.Url}");
_addressTextBox.Text = args.Url;
_scriptTextbox.IsEnabled = true;
_executeScriptButton.IsEnabled = true;
}
}
}
import clr
clr.AddReference("cAlgo.API")
# Import cAlgo API types
from cAlgo.API import *
# Import trading wrapper functions
from robot_wrapper import *
class Test():
def on_go_back_button_clicked(self, args):
self.webView.GoBackAsync()
def on_go_forward_button_clicked(self, args):
self.webView.GoForwardAsync()
def on_go_button_clicked(self, args):
self.webView.NavigateAsync(self.addressTextBox.Text)
def on_reload_button_clicked(self, args):
self.webView.ReloadAsync()
def on_stop_button_clicked(self, args):
self.webView.StopAsync()
def on_execute_script_button_clicked(self, args):
result = self.webView.ExecuteScript(self.scriptTextBox.Text)
api.Print(f"IsSuccessful: {result.IsSuccessful} | Json: {result.Json}")
def on_web_view_navigation_completed(self, args):
api.Print(f"{args.HttpStatusCode} | {args.IsSuccessful} | {args.Url}")
self.addressTextBox.Text = args.Url
self.scriptTextBox.IsEnabled = True
self.executeScriptButton.IsEnabled = True
def on_start(self):
goBackButton = Button()
goBackButton.Text = "←"
goBackButton.Margin = Thickness(3)
goBackButton.Click += self.on_go_back_button_clicked
goForwardButton = Button()
goForwardButton.Text = "→"
goForwardButton.Margin = Thickness(3)
goForwardButton.Click += self.on_go_forward_button_clicked
self.addressTextBox = TextBox()
self.addressTextBox.Text = "https://ctrader.com/"
self.addressTextBox.Margin = Thickness(3)
self.addressTextBox.Width = 150
self.addressTextBox.MinWidth = 150
self.addressTextBox.MaxWidth = 150
goButton = Button()
goButton.Text = "→"
goButton.Margin = Thickness(3)
goButton.Click += self.on_go_button_clicked
reloadButton = Button()
reloadButton.Text = "Reload"
reloadButton.Margin = Thickness(3)
reloadButton.Click += self.on_reload_button_clicked
stopButton = Button()
stopButton.Text = "x"
stopButton.Margin = Thickness(3)
stopButton.Click += self.on_stop_button_clicked
self.scriptTextBox = TextBox()
self.scriptTextBox.Text = "alert('Hi')"
self.scriptTextBox.Margin = Thickness(3)
self.scriptTextBox.Width = 150
self.scriptTextBox.MinWidth = 150
self.scriptTextBox.MaxWidth = 150
self.scriptTextBox.IsEnabled = False
self.executeScriptButton = Button()
self.executeScriptButton.Text = "Execute Script"
self.executeScriptButton.Margin = Thickness(3)
self.executeScriptButton.IsEnabled = False
self.executeScriptButton.Click += self.on_execute_script_button_clicked
addressBarPanel = StackPanel()
addressBarPanel.MaxHeight = 50
addressBarPanel.VerticalAlignment = VerticalAlignment.Top
addressBarPanel.BackgroundColor = Color.Black
addressBarPanel.Orientation = Orientation.Horizontal
addressBarPanel.AddChild(goBackButton)
addressBarPanel.AddChild(goForwardButton)
addressBarPanel.AddChild(self.addressTextBox)
addressBarPanel.AddChild(goButton)
addressBarPanel.AddChild(reloadButton)
addressBarPanel.AddChild(stopButton)
addressBarPanel.AddChild(self.scriptTextBox)
addressBarPanel.AddChild(self.executeScriptButton)
self.webView = WebView()
self.webView.DefaultBackgroundColor = Color.Red
self.webView.NavigationCompleted += self.on_web_view_navigation_completed
self.webView.WebMessageReceived += lambda args: api.Print(f"Source: {args.Source} | Message: {args.Message}")
self.webView.Loaded += lambda args: api.Print(f"Webview loaded, IsLoaded: {args.WebView.IsLoaded}")
self.webView.Unloaded += lambda args: api.Print(f"Webview unloaded, IsLoaded: {args.WebView.IsLoaded}")
self.webView.NavigateAsync(self.addressTextBox.Text)
mainGrid = Grid(2, 1)
mainGrid.Rows[0].SetHeightToAuto()
mainGrid.Rows[1].SetHeightInStars(1)
mainGrid.AddChild(addressBarPanel, 0, 0)
mainGrid.AddChild(self.webView, 1, 0)
window = Window()
window.Child = mainGrid
window.Show()
{
"AccessRights": "None"
}
Constructors
| Name | Description |
|---|---|
| WebViewDesktopCLICloud | Initializes a new instance of the WebView class. |
Methods
| Name | Description |
|---|---|
ExecuteScriptDesktopCLICloudExecuteScriptResult | Executes JavaScript code from the javaScript parameter in the current top level document rendered in the WebView and returns the result. You can only use this method after control is fully loaded and navigation is completed. |
ExecuteScriptAsync 2 overloadsDesktopCLICloudvoid | Executes JavaScript code from the javaScript parameter in the current top level document rendered in the WebView. You can only use this method after control is fully loaded and navigation is completed. |
GoBackAsyncDesktopCLICloudvoid | Navigates asynchronously the WebView to the previous page in the navigation history. |
GoForwardAsyncDesktopCLICloudvoid | Navigates asynchronously the WebView to the next page in the navigation history. |
NavigateAsyncDesktopCLICloudvoid | Navigate asynchronously to another URL. |
NavigateToStringAsyncDesktopCLICloudvoid | Initiates a navigation asynchronously to html content as source HTML of a new document. |
OpenDevToolsWindowDesktopCLICloudvoid | Opens the DevTools window for the current WebView. |
ReloadAsyncDesktopCLICloudvoid | Reloads asynchronously the current page. |
StopAsyncDesktopCLICloudvoid | Stops asynchronously all navigations and pending resource fetches. |
Properties
| Name | Description |
|---|---|
DefaultBackgroundColorDesktopCLICloudColor | Default background color of WebView. |
IsLoadedDesktopCLICloudbool | Returns True if WebView is loaded otherwise False. |
Events
| Name | Description |
|---|---|
LoadedDesktopCLICloudAction<WebViewLoadedEventArgs> | Occurs after web view is loaded |
NavigationCompletedDesktopCLICloudAction<WebViewNavigationCompletedEventArgs> | Occurs when navigation of a page is completed. |
UnloadedDesktopCLICloudAction<WebViewUnloadedEventArgs> | Occurs after web view is unloaded |
WebMessageReceivedDesktopCLICloudAction<WebViewWebMessageReceivedEventArgs> | Occurs after web content sends a message |
Inherited members
From ControlBase: ResetProperty, UniqueId, Style, Left, Top, Right, Bottom, Width, Height, MinWidth, MinHeight, MaxWidth, MaxHeight, IsEnabled, IsVisible, Opacity, Margin, VerticalAlignment, HorizontalAlignment, Dock, IsHitTestVisible