Passaggio all'ora legale 29 marzo 2020 02:0003:00 sposta avanti l'orologio di 1 ora (si dorme 1 ora in meno)
E' possibile far comunicare javascript con Silverlight in modo semplice.
In Silverlight è necessario:
  • registrare il metodo l'oggetto per renderlo accessibile da javascript (HtmlPage.RegisterScriptableObject)
  • decorare i metodi che si vogliono rendere accessibili da javascript (ScriptableMember)
mentre lato javascript bisogna:
  • ottenere un riferimento all'oggetto silverlight (document.getElementById)
  • invocare il metodo interessato di silverlight
Quindi lato SilverLight
using System.Windows.Browser;

namespace Sgart
{
  public partial class TestSL : UserControl
  {
    public TestSL ()
    {
      InitializeComponent();
      ...
      HtmlPage.RegisterScriptableObject("MyControlObject", this);
    }
    ...
   
   public void UpdateSL(string msg)
   {
      MessageBox.Show(msg);
   }
}
e lato javascript
var silver = document.getElementById("mySilverlight");
silver.Content.MyControlObject.UpdateSL("funziona!!!");
<object data="data:application/x-silverlight-2," id="mySilverlight" type="application/x-silverlight-2" width="100%" height="100%" >
  <param name="source" value="bin/debug/TestSL.xap"/>
  <param name="onError" value="onSilverlightError" />
  <param name="background" value="white" />
  <param name="minRuntimeVersion" value="3.0.40624.0" />
  <param name="autoUpgrade" value="true" />
  <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=3.0.40624.0" style="text-decoration:none">
    <img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style:none"/>
  </a>
</object>
Presta attenzione se usi JQuery per accedere all'oggetto.
Essendo un wrapper dell'oggetto, non è possibile richiamare la proprietà Content direttamente, ma bisogna accedere al suo oggetto interno:
var silver = $("#mySilverlight");
silver[0].Content.MyControlObject.UpdateSL("funziona!!!");
nota l'indice [0]