2009-10-07 6 views
1

J'ai une application web contenant un contrôle silverlight. Lorsque l'on accède à la page spécifique qui contient le contrôle silverlight, un javascript est exécuté et si ce script est exécuté trop tôt, le script plante le moteur javascript dans IE, pas même un try/catch peut gérer l'erreur.Javascript se bloque en essayant d'accéder au contenu silverlight

javascript simple

silverlightHtmlElement.Content.SilverlightApplication.SilverlightMethod(); 

Si l'élément de commande silverlight n'a pas été complètement chargé les accidents de script, et non seulement le script, aucune autre javascript est exécuté sur la page du tout.

Un simple "if (silverlightHtmlElement.Content.SilverlightApplication)" pour vérifier si le son accessible est suffisant pour un accident.

Le problème est que je ne peux pas exécuter le script plus tard sur la page. Quelqu'un d'autre a déjà vu ça?

Répondre

0

Vous pouvez écrire du code Silverlight qui exécute une fonction javascript une fois l'initialisation terminée. De cette façon, votre application Silverlight peut informer la page Web quand il a fini de charger.

HtmlPage.Window.Invoke("myJsFunction", null); 
1

vous devez vous assurer que le code ne soit pas exécuté tant que la commande est actif/chargé, ajoutez param à votre balise d'objet silverlight:

<param name="onLoad" value="pluginLoaded" /> 

définit alors une fonction javascript sur la page comme celui-ci

var app= null; 
function pluginLoaded(sender, args) { 
    app= sender.getHost(); 
} 

alors vous pouvez simplement ajouter votre appel à la méthode du gestionnaire d'événements chargé ou interroger la variable d'application pour nulle pour voir si son prêt.