Dopo aver parlato di Hosted Web App e di app ibride (C#/XAML e JS/HTML), abbiamo ricevuto una domanda molto interessante, ovvero, quale versione del browser viene utilizzata come motore di rendering dai controlli WebBrowser (di Silverlight) e WebView (WinRT/UWP) su Windows Mobile 10 e su Windows 10, ovvero, viene utilizzato il motore di Microsoft Edge o quello di Internet Explorer? E quale versione specifica viene utilizzata?
In generale, la risposta alla domanda è molto semplice, i controlli WebBrowser e WebView utilizzano la versione del browser di *default* della piattaforma per cui sono stati compilati, tranne Microsoft Edge che utilizza sempre l’ultima versione installata. Per semplififcarvi la vita ecco una semplice tabellina:
Versione piattaforma | Versione motore di rendering |
WP 8.0 – Silverlight | IEMobile 10.0 |
WP 8.1 – Silverlight | IEMobile 11.0 |
Windows 8.0 - WinRT | WebView 1.0 – basata sul motore di IE 10.0 |
Windows 8.1 e WP8.1- WinRT | WebView 2.0 – basata sul motore di IE 11.0 |
Windows 10 (desktop e mobile) – UWP | WebView 3.0 – basata sulla versione installata di Microsoft Edge |
Questa domanda si applica anche a strumenti come Cordova, che fino alla versione 3.x creava un progetto Silverlight/C# contenente il controllo WebBrowser, e che nelle ultime versioni invece crea progetti WinRT/UWP basati su WinJS/JavaScript anche per la parte di plugin, per cui a seconda della versione del container utilizzato (8.0/8.1 SL o 8.1/10 Universal) verrà utilizzato il motore indicato sopra
Se volte verificare con mano la versione utilizzata, potete provare a creare un semplice progetto di esempio, inserire un controllo phone:WebBrowser (in caso di Silverlight 8.0 o 8.1) o WebView (WinRT/UWP) e farlo navigare verso una pagina che mostra lo user agent.
I risultati nel mio caso sono stati i seguenti per il controllo WebBrowser Silverlight su WP:
App Silverlight 8.0 in esecuzione su Lumia 950 XL
App Silverlight 8.1 in esecuzione su Lumia 950 XL
Come si vede lo user agent restituito dal controllo WebBrowser cambia in funzione del motore di rendering utilizzato, anche il rendering è leggermente diverso a livello di dimensione dei font.
Per quanto riguarda la WebView di WinRT i risultati sono i seguenti:
App Windows 8.1 su Surface Pro 3 con Windows 10 build 11082 Insider Preview, si noti il motore di IE 11 (Trident)
App Windows 10 Universal su Surface Pro 3 con Windows 10 build 11082 Insider Preview, si noti la versione di Edge allineata a quella del sistema operativo, nonostante l’app compilata per la versione 10240 di Windows 10.
E’ importante ricordare che la versione di Edge utilizzata dalla WebView di applicazioni UWP native Windows 10 (o dalle app Javascript, sempre Windows 10, incluse quelle fatte con Cordova) utilizzeranno sempre l’ultima versione di Edge installata sulla macchina, allineata agli ultimi standard Web.
Per maggiori approfondimenti lasciate pure un commento, oppure potete andare sull’apposito Forum MSDN.