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
Integrare Agenti A2A in Azure API Management
Disabilitare le run concorrenti di una pipeline di Azure DevOps
Importare repository da Bitbucket a GitHub Enterprise Cloud
Utilizzare WhenEach per processare i risultati di una lista di task
Interagire con Azure DevOps tramite MCP Server
Ridurre il reflow ottimizzando il CSS
Generare una User Delegation SAS in .NET per Azure Blob Storage
Recuperare automaticamente un utente e aggiungerlo ad un gruppo di Azure DevOps
Recuperare gli audit log in Azure DevOps
Configurare e gestire sidecar container in Azure App Service
Evitare memory leaks nelle closure JavaScript
Gestire pubblicazione Kubernetes tramite .NET Aspire
I più letti di oggi
- Inserire le news di Punto Informatico nel proprio sito
- Effettuare il multi-checkout in linea nelle pipeline di Azure DevOps
- Alleggerire le applicazioni WPF sfruttando gli oggetti Freezable
- Effetto turnstile su tutte le pagine con il Windows Phone Toolkit
- Gli oggetti CallOut di Expression Blend 4.0
- Sfruttare una CDN con i bundle di ASP.NET
- Le DirectInk API nella Universal Windows Platform
- Consumare dati binari in realtime lato client con ASP.NET Core SignalR


