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
Gestione delle scrollbar dinamiche in HTML e CSS
Generare una User Delegation SAS in .NET per Azure Blob Storage
Gestione CSS in Blazor con .NET 9
Utilizzare DeepSeek R1 con Azure AI
Integrare modelli AI in un workflow di GitHub
Simulare Azure Cosmos DB in locale con Docker
Managed deployment strategy in Azure DevOps
Usare la libreria PredicateBuilder per eseguire query tramite Entity Framework che usano or su più campi
Collegare applicazioni server e client con .NET Aspire
Combinare Container Queries e Media Queries
Configuratione e utilizzo .NET Aspire CLI
Recuperare automaticamente un utente e aggiungerlo ad un gruppo di Azure DevOps
I più letti di oggi
- Integrare OpenAI tramite Aspire
- Interagire con Azure DevOps tramite MCP Server
- Creare un agente A2Acon Azure Logic Apps
- ASP to ASP.NET Migration Assistant Alpha
- Speciale ASP.NET Charting: grafici per tutti i gusti!
- Definire il colore di una scrollbar HTML tramite CSS
- Usare la libreria PredicateBuilder per eseguire query tramite Entity Framework che usano or su più campi
- The Agentic Day - Milano