Question

J'utilise le JQuery accordéon. Tout va bien dans FireFox. Dans IE7, cependant, lorsque je clique sur un lien dans mon document qui élargit l'une des rubriques du menu accordéon mon contrôle serveur d'en-tête est re taille (rétrécis). Comment puis-je arrêter l'écran de calibrage re? Ceci est le morceau de JavaScript en question:

if (!$('h3.ReferenceBackgroundHeader', '#References').hasClass('ui-state-active')) {

                $("#References").accordion('activate', 0);

            }

            window.scrollTo(0, $('#References').offset().top);
            return false;

Ce que je veux est le .accordion('activate',indexval); de ne pas modifier ma mise en forme d'en-tête.


Bizarre .. Il doit y avoir un travail autour de cela dans IE. Si je vide ma fonction et juste courir:

window.scroll(0,900);

Je perds toujours mon contrôle sever au dessus ?! Quelqu'un at-il une suggestion?


Peut-être est le problème .. La page est en fait composé de deux divs. La partie supérieure div est pour afficher le contrôle d'en-tête (avant les jours de MasterPages) et la partie inférieure est la partie que je tente de faire défiler à l'intérieur. Le div « contenu » est celui que je besoin de la possibilité de faire défiler. Le div « en-tête » est celui qui disparaît quand je défiler. Quelqu'un peut-il me sauver encore? :)

<body>
<form id="Form1" method="post" runat="server">
    <div id="header">
        <uc1:Header ID="headerControl" runat="server"></uc1:Header>
    </div>
    <div id="content" style="overflow:auto">
        <asp:PlaceHolder ID="contentPlaceholder" runat="server"></asp:PlaceHolder>
    </div>
</form>

Était-ce utile?

La solution 2

Je l'ai compris. Je travaille sur le code de l'héritage que j'ai hérité. J'aboyait le mauvais arbre. J'ai trouvé le code suivant dans l'en-tête de la page me donner la douleur:

function resizeContentWindowScrollBar() {
         var contentDiv = document.getElementById("content");
         var header = document.getElementById("header");

         if (header != null) {
             var desiredHeight = document.body.clientHeight - header.clientHeight;

             if (desiredHeight > 0) {
                 contentDiv.style.height = (document.body.clientHeight - header.clientHeight) + "px";

             }
         }


     }

Remarquez les appels header.clientHeight? Cet extrait se évidemment juste la hauteur d'en-tête et cela équivaut à la teneur en hauteur div. Le problème était (et seulement dans IE vous l'esprit) la fonction clientHeight a toujours été de retour « 0 ». Je remplaçons par header.offsetHeight et tout va bien.

Il semblerait que dans IE mes fonctions de clientHeight où ne fonctionne pas correctement.

Autres conseils

Avez-vous une barre de défilement dans votre navigateur avant et après vous étendez le menu?

Qu'est-ce qui pourrait se produire est que avant de développer le menu, tout se sur l'écran, de sorte que le navigateur ne vous donne pas une barre de défilement; mais quand vous développez le menu, il a besoin de plus d'espace, de sorte que le navigateur ajoute une barre de défilement, ce qui provoque la page Web à « échelle » vers le bas.

Je ne sais pas comment résoudre ce problème sans créer un grand min-height dans votre fichier CSS de sorte que la barre de défilement montre toujours.

L'espoir qui aide.

Mise à jour: Je viens de découvrir un site qui parle de la façon de résoudre la question de la barre de défilement. Je voulais juste laisser quelqu'un d'autre qui vient à travers ce une solution beaucoup plus propre.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top