IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Silverlight Discussion :

"Objet" Silverlight absent du DOM


Sujet :

Silverlight

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 19
    Par défaut "Objet" Silverlight absent du DOM
    Bonjour,

    J'ai besoin d'appeler des procédures de mon application SL par du code Javascript dans la page HTML (par le biais de RegisterScriptableObject). Sur 8 ordis où j'ai testé l'application, ça marche nickel sauf sur un... Sur cet ordi, JS (sous IE9) considère que le plugin n'existe pas dans le DOM.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <form id="form1" runat="server" style="height:100%">
        <div id="silverlightControlHost">
            <object id = "SL" data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
                <param name="source" value="Test.xap"/>
              .........
            </object>
        </div>
    </form>
    Sur cet ordi uniquement, document.getElementById("SL").content me renvoie 'undefined'. Sur les autres, je n'ai aucun problème.

    Idem si je teste par l'événement onLoad :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function onPluginLoaded(plugin) {
      var SL = plugin.getHost().Content; // => SL = undefined sur cet ordi, object sur tous les autres
      ........
    }
    Apparemment je ne suis pas le premier à rencontrer cette anomalie (http://stackoverflow.com/questions/1...vascript-in-ie).

    Si quelqu'un a une solution miracle, je suis preneur.

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 19
    Par défaut
    Bon, je m'en suis tiré avec du bon gros système D. Quand il faut appeler une procédure SL, je stocke son nom et les éventuels paramètres (par exemple : "Proc1|arg1") dans l'attribut title du div contenant le plugin, je simule un clic sur ce div et j'intercepte l'événement dans 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
    15
    16
    17
    18
    19
    20
    21
    22
    Private SLDiv As HtmlElement
     
    Public Sub New()
     
        SLDiv = HtmlPage.Document.GetElementById("silverlightControlHost")
        SLDiv.AttachEvent("onclick", New EventHandler(AddressOf JSCommand))
     
    End Sub
     
    Private Sub JSCommand(sender As Object, e As EventArgs)
     
        Dim cmd = SLDiv.GetAttribute("title").Split("|")
        Select Case cmd(0)
            Case "Proc1"
                Me.Proc1(cmd(1))
            Case "Proc2"
                Me.Proc2
            Case "Proc3"
                Me.Proc3(cmd(1), cmd(2)
        End Select
     
    End Sub
    C'est du système D, mais ça marche.

    En tout cas, il vaut mieux éviter de passer par RegisterScriptableObject / ScriptableMember pour appeler du code Silverlight par Javascript à cause de cette anomalie qui n'a rien d'exceptionnel, si j'en crois mes recherches sur Google.

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo