2010-09-02 13 views
5

Tengo una página con una aplicación Silverlight. En mi página está insertada una clave de autenticación que la aplicación Silverlight necesitará para todas las solicitudes de servicio web. Por lo tanto, onload la aplicación Silverlight necesita obtener la clave y hacer una conexión inicial a un servicio WCF. El problema es que es muy impredecible si la página o la Silverlight se cargarán primero, así que no puedo usar las páginas onload = event porque a veces la Silverlight es nula, y no puedo usar el método silverlight initialize porque a veces la función js aún no está definida, lo cual Supongo que significa que está cargando la página desde el caché, que carga el SL, y solo luego analiza el JS.Interacción de Silverlight y Javascript

Gracias.

Respuesta

1

Puede obtener interoperabilidad Silverlight para invocar un método JS y obtener su valor de retorno utilizando la siguiente:

// Returning a String 
string stringValue = (string)HtmlPage.Window.Invoke("myJSMethod"); 

donde myJSMethod devuelve la clave incorporada. Pero si está incrustando la clave de todos modos, ¿por qué no simplemente ponerlo en el <object><param> s?

<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%"> 
    <param name="myKey" value="myKeyValue"/> 
    ... 
</object> 
+2

Gran sugerencia acerca de la incrustación en un param. Una consideración es que en lugar de usar Object, cree una instancia del control de Silverlight a través de una llamada a Silverlight.createObject en Silverlight.js. Le da un control mucho más estricto que las etiquetas de objetos estáticos. –