Laurent Duveau
Appel de fonctions JavaScript depuis Silverlight 2
Voici un exemple de code pour appeler une fonction JavaScript depuis le code behind de Silverlight 2, avec ou sans paramètres, et aussi comment appeler une fonction Js anonyme inline.
Par Laurent Duveau publié le 06/04/2008 à 21:57, lu 9677 fois,
[Ceci est écrit à l'heure où Silverlight est en v2 beta 1]
Appeler une fonction JavaScript d'une page HTML (ou aspx) depuis le code behind d'un objet Silverlight ?
C'est désormais très simple en Silverlight 2 (par rapport à la version alpha) !

Supposons que ma page aspx contienne ces 2 fonctions JavaScript :

<script type="text/javascript">

    function AfficheMessage()

    {

      alert("Alert Js déclenchée depuis Silverlight 2");

    }

 

    function AfficheMessageParam(msg)

    {

      alert("Alert de Silverlight 2: " + msg);

    }       

</script>

J'ai créé un petit projet Silverlight avec 3 boutons pour tester l'appel des fonctions JavaScript depuis le code behind:
 
Mon petit projet de test

Mon petit projet de test

 
Dans votre code behind Silverlight (*.xaml.cs pour du C#) commencez par référencer ce namespace :

using System.Windows.Browser;

Appel simple:

/// <summary>

/// Appel de la fonction Js AfficheMessage de la page aspx

/// </summary>

private void btnFonctionJs_Click(object sender, RoutedEventArgs e)

{

    HtmlPage.Window.Invoke("AfficheMessage");

}

Appel avec paramètre(s):

/// <summary>

/// Appel de la fonction Js AfficheMessageParam de la page aspx

/// </summary>

private void btnFonctionJsParam_Click(object sender, RoutedEventArgs e)

{

    HtmlPage.Window.Invoke("AfficheMessageParam", new string[] { "Salut!" });;

}

Appel fonction Js anonyme inline :

/// <summary>

/// Appel de fonction anonyme Js inline

/// </summary>

private void btnJsInline_Click(object sender, RoutedEventArgs e)

{

    HtmlPage.Window.Eval("(function(){ alert('Fonction anonyme Js inline depuis Silverlight 2'); })()");

}

Retrouvez le code complet en fichier joint.
 
» Démarrer une discussion