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
Utilizzo del persistent state di Blazor nel prerendering
Importare repository da Bitbucket a GitHub Enterprise Cloud
Ottimizzare i costi con Smart tier in Azure Blob Storage
Utilizzo di CSS Scroll Snap per realizzare un carousel
Utilizzare il Null conditional assignment di C# 14
Utilizzare Locust con Azure Load Testing
Ridurre il reflow cambiando il CSS
Esporre tool MCP con Azure Functions
Integrazione di Copilot in .NET Aspire
Configurare automaticamente un webhook in Azure DevOps
Abilitare .NET 10 su Azure App Service e Azure Functions
Integrare modelli AI in un workflow di GitHub
I più letti di oggi
- Gli agenti AI sono uno dei temi più interessanti del momento, ma costruirli bene richiede molto più di un semplice prompt. In questa sessione parleremo di Azure AI Foundry con un taglio concreto, utile per capire come progettare agenti AI enterprise-grade, integrarli con tool e memoria, monitorarli e gestirne il deployment in modo efficace. Ci vediamo a Milano al Global Azure 2026 - ASPItalia.com, con Stefano Demiliani. #GlobalAzure #Azure #AzureAIFoundry #AI #AIAgents https://aspit.co/globalazure-26
- AKS non significa solo fare deploy. Significa anche gestire workload, operation, scalabilità e affidabilità nel modo giusto. In questa sessione parleremo di Azure Kubernetes Service con un taglio concreto, utile per chi vuole capire come portare Kubernetes in produzione senza complessità inutile. Ci vediamo a Milano per il Global Azure 2026 - ASPItalia.com, con Antonio Lamorte e Matteo Tumiati. #GlobalAzure #Azure #AKS #Kubernetes https://aspit.co/globalazure-26
- Utilizzo del persistent state di Blazor nel prerendering




