Bonjour,
j'essaye de communiquer entre silverlight et javascript.
Dans une application silverlight, j'ai un composant qui s'occupe d'ouvrir une iframe et de la poser par dessus l'application.
Depuis cette iframe j'ai une page HTML contenant du javascript. C'est cette page qui doit communiquer avec mon silverlight.
Voici le code contenant l'application silverlight:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
<div id="silverlightControlHost">
        <object id="slControl" data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
		  <param name="source" value="ClientBin/GeoSLAppIB.xap"/>
		  <param name="onError" value="onSilverlightError" />
		  <param name="background" value="white" />
		  <param name="minRuntimeVersion" value="4.0.50401.0" />
		  <param name="autoUpgrade" value="true" />
          <param name="windowless" value="true" />
		  <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.50401.0" style="text-decoration:none">
 			  <img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight" style="border-style:none"/>
		  </a>
	    </object><iframe id="_sl_historyFrame" style="height:0px;width:0px;border:0px"></iframe></div>
L'application silverlight:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public GeoSLAppIB()
        {
            InitializeComponent();
 
....
            HtmlPage.RegisterScriptableObject("SLApp", this);
 
 
        }
        [ScriptableMember]
        public void TestJS(string message)
        {
            MessageBox.Show(message);
        }
La page html que j'ouvre dans l'iframe depuis silverlight:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
 function AppelSilverlight(message) {
            var sl= parent.document.getElementById("slControl");
 
            if (sl != null) {
                alert(sl.Content);
            }
            else
                alert("slControl introuvable");
 
        }
sl.Content me retourne "undefined" ! Du coup je ne peux pas acceder a ma fonction...

J'avais déjà fait fonctionné un code similaire, et la après avoir passé la matiné a chercher, je sèche completement!
Des idées?
Merci!

Edit: Hum je viens de me rendre compte que ca fonctionne très bien sous IE 7 mais pas sous le 8! Pourtant rien d'officiel sur le site msdn, c'est toujours la même méthode qu'il préconise -_-.