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 :

[SL] Problème Iframe et scrollbar navigateur


Sujet :

Silverlight

  1. #1
    Membre chevronné Avatar de roster
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 397
    Par défaut [SL] Problème Iframe et scrollbar navigateur
    Bonjour,

    Dans une appli Silverlight, j'affiche une Iframe.
    Cette Iframe débordant de la fenêtre du navigateur, une barre verticale de scrolling et ajoutée. Or dans mon appli SL, j'ai déjà déclarer un ScrollViewer. Du coups, je me retrouve avec deux barres de scrolling sur le coté droit (à l'exception d'IE).

    Pour le bon fonctionement de mon appli, je souhaiterai le comportement suivant:
    - lorsque j'affiche l'Iframe, le ScrollViewer de SL disparaisse et laisse la place à la scrollbar du navigateur.
    -lorsque je cache cette Iframe, la scrollbar du navigateur disparaisse et laisse la place au scrollviewerSL.

    Notez que je ne parle pas du scrollbar propre à l'Iframe qui apparait lorsque la source dépasse de son container, mais de la scrollbar native du navigateur.

    Est-ce possible de faire cela?

    En espérant avoir été clair, je vous remercie de toute aide ou conseil.

    Au cas ou:
    -code de mon Iframe dans l'html:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <iframe id='maframe' scrolling="no" frameborder="0"  style='visibility:hidden;height:0;width:0;border:0px;position:absolute'></iframe>
    -code permettant la modif de l'Iframe dans le behind:

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
     private void Button_Click(object sender, RoutedEventArgs e)
            {
                var f = HtmlPage.Document.GetElementById("maframe");
     
                if (f != null)
                {
                    if (f.GetStyleAttribute("visibility") == "visible")
                    {
                        f.SetStyleAttribute("visibility", "hidden");
     
                    }
                    else
                    {
     
                        GeneralTransform gt = this.Container.TransformToVisual(Application.Current.RootVisual as UIElement);
                        Point topleft = gt.Transform(new Point(0, 0));
                        int controlTop = (int)topleft.Y;
                        int controlLeft = (int)topleft.X;
     
                        if (f != null)
                        {
                            f.SetStyleAttribute("left", controlLeft.ToString() + "px");
                            f.SetStyleAttribute("top", controlTop.ToString() + "px");
                            f.SetStyleAttribute("visibility", "visible");
                            f.SetStyleAttribute("width", this.Container.ActualWidth.ToString() + "px");
                            f.SetStyleAttribute("height", this.Container.ActualHeight.ToString() + "px");
                        }
                        f.SetAttribute("src", "http://www.MonSiteFrame.com");
                    }
                }
            }

  2. #2
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Pour cacher le scroll de ton ScrollViewer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    v.HorizontalScrollBarVisibility = ScrollBarVisibility.Hidden;
    v.VerticalScrollBarVisibility = ScrollBarVisibility.Hidden;
    Pour la remettre tu changes en Visible.

  3. #3
    Membre chevronné Avatar de roster
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 397
    Par défaut
    Oui, mais c'est surtout le scrollbar du navigateur que je n'arrive pas à cacher.

    En fait, quand je démarre mon appli SL, il n'y a que le scrollviewer.
    Puis après j'affiche une Iframe par-dessus mon appli. Cela fait aparaitre le scrollbar du navigateur. Le problème est que lorsque je décide de ne plus afficher l'Iframe, le scrollbar reste en place. De plus, ce scrollbar ne me permet pas de scroller dans mon appli SL, l'affichage en prend un coups.

    Y-at'il une solution pour faire disparaitre ce scrollbar indésirable?

  4. #4
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Peut-être un style css à appliquer.

    Je pense pas que le problème vienne de Silverlight, peut-être en allant faire un tour sur le forum CSS.

  5. #5
    Membre chevronné Avatar de roster
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 397
    Par défaut
    C'est vrai, je n'y avais pas pensé, merci.

  6. #6
    Membre chevronné Avatar de roster
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 397
    Par défaut
    C'est bon, problème résolu en passant par le css du body (overflow hidden), tout simplement...

    Merci de m'avoir rafraîchit les neurones en me mettant sur la voie!

  7. #7
    Membre chevronné Avatar de roster
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 397
    Par défaut
    Bon finalement, cette méthode n'est pas convenable.
    En fait, à chaque modification du style dans la balise body, la page est rechargée dans le navigateur. De plus, cela ne fonctionne pas dans IE.

    Je fournis le code au cas ou...

    modif balise body:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var f2 = HtmlPage.Document.GetElementById("body");
    f2.SetStyleAttribute("overflow", "hidden");
    balise body avec l'Iframe:

    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
    <body id='body' style='visibility:visible;overflow:auto' >
        <!-- Les erreurs d'exécution Silverlight s'afficheront ici.
    	Il s'agit d'informations de débogage qui doivent être supprimées ou masquées, une fois le débogage terminé -->
    	<div id='errorLocation' style="font-size: small;color: Gray;"></div>
    
        <div id="silverlightControlHost">
    		<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
    			<param name="source" value="ClientBin/SilverlightOnApp.xap"/>
    			<param name="windowless" value="true" />
    			<param name="onerror" value="onSilverlightError" />
    			<param name="background" value="white" />
    			<param name="minRuntimeVersion" value="2.0.31005.0" />
    			<param name="autoUpgrade" value="true" />
    			<a href="http://go.microsoft.com/fwlink/?LinkID=124807" style="text-decoration: none;">
         			<img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Téléchargez Microsoft Silverlight" style="border-style: none"/>
    			</a>
    		</object>
    		<iframe id='maframe' scrolling="no" frameborder="0"  style='visibility:hidden;height:0;width:0;border:0px;position:absolute'></iframe>
        </div>
    </body>
    Pour ce qui concerne le ScrollViewer de SL, cela marche parfaitement.

    Donc mon problème reste de savoir comment puis-je gérer l'affichage du scrollbar du navigateur de façon transparente??? C'est-à-dire, sans rechargement de la page.

    Je pense évidement à l'option javascript, mais j'espère autre chose. Même si je suis-preneur de toute méthode...
    Des idées?

  8. #8
    Membre chevronné Avatar de roster
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 397
    Par défaut
    Bon j'ai tenté le javascript, mais le problème avec IE persiste.

    Je me suis donc replié sur le scrollbar propre à l'Iframe. Sous Firefox et Chrome cela est convenable, même si j'ai du rechigner sur l'aspect design. Mais IE, pas moyen de faire quelque chose de potable. Une fois charger l'Iframe puis décharger suite à un évènement, le scrollbar sur le coté reste toujours en place, le seul moyen est de recharger toute l'appli SL. Evidemment, ce n'est pas ce que je souhaite.

    Si quelqu'un a une idée, ou deux?...

Discussions similaires

  1. problème avec les scrollbars
    Par thierry7106 dans le forum Modules
    Réponses: 5
    Dernier message: 13/05/2007, 02h40
  2. Problème affichage XML dans navigateur
    Par speedev dans le forum Langage
    Réponses: 11
    Dernier message: 19/03/2007, 16h26
  3. Réponses: 3
    Dernier message: 23/05/2006, 20h17
  4. Problème avec ma scrollbar
    Par artif dans le forum Composants
    Réponses: 4
    Dernier message: 12/12/2005, 16h35
  5. [Director] Problème d'animation dans navigateur
    Par phendile dans le forum Autres langages
    Réponses: 1
    Dernier message: 01/12/2004, 20h36

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