2010-09-21 2 views

Répondre

3

utilisation assez simple: -

HtmlPage.Window.Invoke("someJavascriptFunc", "Hello", "World"); 

Dans le javascript dans la page d'accueil du silverlight ont: -

function someJavascriptFunc(p1, p2) 
{ 
    alert(p1 + ' ' + p2); 
} 

Modifier: Ken est juste ce qui précède est le mauvais sens .

Disons que vous avez cette fonction dans Silverlight: -

string GetStuff(string name) 
{ 
    return "Hello " + name; 
} 

Vous pouvez activer cette fonction à javascript comme ceci: -

HtmlPage.Window.SetProperty("sayHello", new Func<string, string>(GetStuff));  

maintenant code javascript peut simplement faire quelque chose comme cela: -

alert(sayHello("Fred")); 
+1

C'est la direction opposée, je pense: de SL à JS. Je pense qu'il veut l'inverse, de JS à SL. –

+0

@Ken: vous avez raison d'oh! – AnthonyWJones

+0

Je n'avais jamais vu cette technique auparavant. Agréable. –

0

Si vous utilisez des événements, en théorie, vous pouvez utiliser AttachEvent t o abonnez-vous aux événements. Ce n'est pas tout à fait la même chose que les rappels, mais c'est proche. Mises en garde: Je n'ai pas testé AttachEvent sur les navigateurs basés sur Mozilla (où la commande JS appropriée est "addEventListener()" plutôt que "attachEvent()"), et j'ai eu du mal à faire fonctionner AttachEvent() fiable même dans IE. J'ai donc toujours utilisé l'attribut [ScriptableMember], et l'ai appelé depuis JS. Y a-t-il une raison pour laquelle vous ne voulez pas utiliser cela? (Je serais curieux d'entendre si quelqu'un a de meilleures idées.)

+0

Mis à jour ma réponse pour être le bon chemin. – AnthonyWJones

Questions connexes