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
Usare il versioning con i controller di ASP.NET Core Web API
Assegnare un valore di default a un parametro di una lambda in C#
Utilizzare le Cache API di JavaScript per salvare elementi nella cache del browser
Configurare policy CORS in Azure Container Apps
Creazione di plugin per Tailwind CSS: espandere le funzionalità del framework dinamicamente
Eseguire attività basate su eventi con Azure Container Jobs
Potenziare Azure AI Search con la ricerca vettoriale
Eseguire query manipolando le liste contenute in un oggetto mappato verso una colonna JSON
Elencare le container images installate in un cluster di Kubernetes
.NET Conference Italia 2023
Cambiare la chiave di partizionamento di Azure Cosmos DB
Miglioramenti nelle performance di Angular 16
I più letti di oggi
- Riordinare le righe di una GridView di ASP.NET con jQuery
- Creazione di un alarm con suono personalizzato con Windows Phone 7.1
- Utilizzare la session affinity con Azure Container Apps
- Blue-green deployment con Azure Web App e DevOps
- Ed infine anche il calendario :)
- Configurare la diagnostica di Azure attraverso Visual Studio
- Recuperare la data di creazione di un tag tramite una pipeline YAML di Azure DevOps
- Microsoft Security Bulletin MS05-002
- .NET Core e dispositivi IoT
- Eseguire attività pianificate con Azure Container Jobs