Quand Mercator s'exécute dans une session virtualisée, la propriété statique suivante est différente de null : MercatorUi.Globals.VirtualUI
Cet objet, de la classe MercatorVirtualUI.MercatorVirtualUI, qui se trouve dans MercatorTunnel.dll, permet d'accéder à toute une série de propriétés et méthodes propres à la virtualisation.
Par exemple :
- Connaître le Browser Agent de l'internaute : MercatorUi.Globals.VirtualUI.BrowserInfo.UserAgent
- Créer un cookie : MercatorUi.Globals.VirtualUI.SetCookie("mycookie", "valeur", DateTime.Now.AddDays(1));
- Lire un cookie : string s = MercatorUi.Globals.VirtualUI.GetCookie("mycookie");
- Provoquer le téléchargement d'un fichier présent sur le serveur : MercatorUi.Globals.VirtualUI.DownloadFile(@"c:\fichier_sur_le_serveur");
- Simuler un client sur une ancre (HREF) : MercatorUi.Globals.VirtualUI.OpenLinkDlg("http://www.supersite.com");
- Exécuter un code JavaScript dans le browser de l'internaute : MercatorUi.Globals.VirtualUI.ExecScript("alert('Hello world !');");
- Savoir si le mode "Touch device" est activé : bool b = MercatorUi.Globals.VirtualUI.IsTouchDevice;
- ...
Par ailleurs, dans l'Editeur de Code du menu Outils, un type d'onglet supplémentaire est disponible : Js
Il permet d'exécuter directement un code JavaScript dans le browser.
En conséquence, Mercator virtualisé se voit doté de deux langages de programmation :
- C# qui s'exécute dans Mercator, sur le serveur
- JavaScript qui s'exécute dans le browser de l'internaute
Les relations entre les deux sont bien entendu possibles. Par exemple, ce code JavaScript va créer un cookie directement dans le browser de l'internaute :
var c_name = 'mycookie';
var exdate = new Date();
exdate.setDate(exdate.getDate() + 1);
var c_value = encodeURIComponent('Hello World') + "; expires=" + exdate.toUTCString();
document.cookie = c_name + "=" + c_value + "; path=/";
Et ce code C# va lire ce même cookie :
string s = MercatorUi.Globals.VirtualUI.GetCookie("mycookie");