Nelle applicazioni Silverlight Out Of Browser (OOB) abbiamo a disposizione il controllo WebBrowser per visualizzare il contenuto di pagine HTML, sia remote che locali.
Nonostante la pagina HTML sia gestita dal controllo, abbiamo la possibilità di comunicare con essa attraverso Javascript, in un modo molto simile a quanto abbiamo visto nello script #45.
Il controllo WebBrowser, infatti, dispone del metodo InvokeScript al quale possiamo passare il nome della funzione Javascript da chiamare, insieme ai parametri che vogliamo passare alla funzione stessa:
private void Button1_Click(object sender, RoutedEventArgs e) { object results = WB1.InvokeScript("LoadSearch", new string[] { "Silverlight" }); }
WB1 rappresenta il controllo WebBrowser presente nello UserControl principale:
<WebBrowser x:Name="WB1" Source="http://localhost:34050/HTMLPage1.htm" Height="200" Width="300" ScriptNotify="WB1_ScriptNotify"/>
LoadSearch, invece, è il nome della funzione Javascript presente nella pagina HTML ospitata dal controllo:
<script type="text/javascript"> function LoadSearch(searchString) { window.location = "http://www.bing.com/search?q=" + searchString window.external.notify("Search completed") } </script>
Nell'esempio, la funzione usa la stringa passata come parametro per usarla come parametro di una ricerca con Bing. Grazie alla funzione window.external.notify è possibile effettuare la comunicazione inversa dalla pagina verso l'applicazione. Dopo l'invocazione di tale funzione, il controllo WebBrowser esegue il metodo definito nella proprietà ScriptNotify, nell'esempio WB1_ScriptNotify:
void WB1_ScriptNotify(object sender, NotifyEventArgs e) { MessageBox.Show(e.Value); }
Il parametro passato dalla funzione Javascript window.external.notify viene trasferito all'applicazione Silverlight attraverso l'oggetto NotifyEventArgs.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Ottimizzare il json generato dalla serializzazione con System.Text.Json eliminando i valori non necessari
Creare un'istanza di Azure SQL Database tramite ARM
Scenari di test avanzati con ASP.NET Core
Configuration strongly typed anche per singleton con IOptionsMonitor in ASP.NET Core
Forzare la lingua dell'interfaccia di Azure Active Directory B2C
Eseguire uno scroll all'interno di una pagina Blazor
Utilizzare WordPress con Azure App Service
Caricare automaticamente i dati delle relazioni in EF Core 6
Gestire gli errori in un servizio gRPC di ASP.NET Core
Creare convenzioni di mapping globali in Entity Framework Core
Usare il throttling per limitare la frequenza degli eventi in Blazor
Gestire le chiamate a servizi esterni in ASP.NET Core e Blazor tramite Polly
I più letti di oggi
- Pinnare la propria applicazione nella taskbar con la Universal Windows Platform
- Inviare messaggi al client in real time tramite gli Hub di ASP.NET SignalR
- Un Model Binder personalizzato per ASP.NET MVC per costruire oggetti DbGeography
- Impostare il fuso orario di un cloud service di Microsoft Azure
- Recuperare le proprietà di una classe tramite i metadati con Entity Framework
- Style predefiniti in Silverlight
- Recuperare un repository tramite le REST API di Azure DevOps