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
Configurare il nome della run di un workflow di GitHub in base al contesto di esecuzione
Gestire i dati con Azure Cosmos DB Data Explorer
Eseguire una GroupBy per entity in Entity Framework
Migrare una service connection a workload identity federation in Azure DevOps
Supportare lo HierarchyID di Sql Server in Entity Framework 8
Gestione degli stili CSS con le regole @layer
Creazione di plugin per Tailwind CSS: espandere le Funzionalità del Framework
Utilizzare Tailwind CSS all'interno di React: primi componenti
Usare il colore CSS per migliorare lo stile della pagina
Le novità di Angular: i miglioramenti alla CLI
Implementare l'infinite scroll con QuickGrid in Blazor Server
Utilizzare un service principal per accedere a Azure Container Registry
I più letti di oggi
- Proteggere le risorse Azure con private link e private endpoints
- Referenziare un @layer più alto in CSS
- Centrare elementi in HTML tramite CSS
- Gestire i dati con Azure Cosmos DB Data Explorer
- Utilizzare EF.Constant per evitare la parametrizzazione di query SQL
- Inference di dati strutturati da testo con Semantic Kernel e ASP.NET Core Web API