2010-09-02 23 views
5

Ich habe eine Seite mit einer Silverlight-App darauf. Eingebettet in meine Seite ist ein Authentifizierungsschlüssel, den die silverlight App benötigt, um alle Web-Service-Anfragen zu erledigen. Also laden Sie die silverlight App, um den Schlüssel zu erhalten und eine erste Verbindung zu einem WCF-Dienst herzustellen. Das Problem ist, dass es sehr unberechenbar ist, ob die Seite oder das Silverlight zuerst geladen wird, also kann ich die Seiten onload = event nicht benutzen, weil manchmal das silverlight null ist und ich silverlights initialize nicht verwenden kann, weil manchmal die js Funktion noch undefiniert ist - was Ich nehme an, dass es die Seite aus dem Cache lädt, die den SL lädt, und dann nur den JS analysiert.Silverlight und Javascript-Interaktion

Danke.

Antwort

1

Sie Silverlight-Interop bekommen kann eine JS-Methode aufrufen und den Rückgabewert erhalten mit dem folgenden:

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

wo myJSMethod die eingebettete Schlüssel zurückgibt. Aber wenn Sie den Schlüssel sowieso einbetten, warum nicht einfach in die <object><param> s einfügen?

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

Großer Vorschlag über die Einbettung in einen Param. Eine Überlegung ist, dass anstelle der Verwendung von Object das Silverlight-Steuerelement über einen Aufruf von Silverlight.createObject in Silverlight.js instanziiert wird. Es gibt Ihnen eine viel genauere Kontrolle als statische Objekt-Tags. –