Masquer et afficher une frame

Masquer et afficher une frame - HTML/CSS - Programmation

Marsh Posté le 16-08-2005 à 11:07:09    

Salut à tous,  :hello:  
 
J'aimerai afficher et cacher une frame quand je clqiue sur une image voila ce que j'ai fais :

Code :
  1. function cacher()
  2. {
  3.     if ( parent.fr2.cols=="0,*" )
  4.         parent.fr2.cols="175,*";
  5.     else
  6.         parent.fr2.cols="0,*";
  7. }


 
Mais existe t il une fonction qui remplace ceci ? car c'est un peu du code de grizzli
 
Merci d'avance ;)

Reply

Marsh Posté le 16-08-2005 à 11:07:09   

Reply

Marsh Posté le 16-08-2005 à 11:07:57    

:sweat:
 
C'est pour faire quoi ? C'est pour un intranet ?

Reply

Marsh Posté le 16-08-2005 à 11:08:49    

Repond oui... :lol:

Reply

Marsh Posté le 16-08-2005 à 11:11:27    

oui

Reply

Marsh Posté le 16-08-2005 à 14:13:25    

personne ne voit de solutions ??

Reply

Marsh Posté le 16-08-2005 à 14:19:41    

Bah si c'est effectivement pour un intranet, bah, je vois pas le problème :??:

Reply

Marsh Posté le 16-08-2005 à 14:26:54    

J'avais fait un petit script pour une appli intranet framed, une frame supérieure pour le titre et la navigation et une frame inférieure contenant un frameset avec 1-3 frames.
 
Le principe est de faire tourner le script dans la frame supérieure (de titre), le script récupère le nombre de sous-frames de la frame inférieure et génère dynamiquement des boutons d'ouverture/fermeture si il y a >=2 frames en bas.
 
Il est surcommenté, mais peut encore contenir quelques bugs, et il leak sûrement comme un porc

/* Module resizer:
  Boutons de resize de sous frames.
  Génère dynamiquement des boutons permettant d'ouvrir et fermer des frames de niveau 2
  Préfixes externes "frameCollapseButtons" (pour variables globales et IDs externes)
   
 Exemple
  <frameset>
   <frame1></frame1>
   <frame2>
    <frameset>
     <frame21></frame21>
     ...
     <frame2x></frame2x>
    </frameset>
   </frame2>
  </frameset>
   
  Toutes les sous frames de la frame 2 (frames 21 à 2x) verront généré un bouton
  permettant de les ouvrir et fermer.
   
  Le script est actuellement statique dans ses targets et ne gère que
  la frame les frames de 2e niveau de la 2e frame de l'écran principal.
*/
 
/* Création des variables globales:
  frameCollapseButtonsTimerLock pour ne pas rafraichir les boutons alors qu'on les a activés
  frameCollapseButtonsTimer pour pouvoir stopper le timer
*/
var frameCollapseButtonsTimerLock = false;
var frameCollapseButtonsTimer = null;
 
// Fonction de boucle principale
function frameCollapseButtonsPollFrames() {
 // Si on a locké l'évènement, sortie de la fonction
    if(frameCollapseButtonsTimerLock)
        return;
    /* Si les objets et éléments nécessaires à l'exécution n'existent pas
     On arrête le timer et on sort de la fonction
    */
    if(  !document.getElementById  
      || !document.createElement  
      || !document.createTextNode
      || !top.frames[1]
      || !top.frames[1].document
      || !top.frames[1].document.getElementsByTagName
      ) {
  clearInterval(frameCollapseButtonsTimer);
  return;  
    }
 
 // Récupération du formulaire généré contenant les boutons
    var form = document.getElementById('frameCollapseButtons');
 
 // Récupération du frameset contenant les frames à manipuler
    var frameset = top.frames[1].document.getElementsByTagName('frameset')[0];
 var i=0;
 
 // Si frameset indisponible, sortie
    if(!frameset)
        return;
 
    if(!form) {
     // Si formulaire contenant les boutons inexistant, le créer
        form = document.createElement('FORM');
        // ID permettant de hooker les styles CSS  
        //   + récupération du formulaire dans les itérations suivantes
        form.id="frameCollapseButtons";
        document.body.appendChild(form);
    } else {
     // Frameset visé non modifié => les frames contenues n'ont pas changé
     // => inutile de faire le poll
        if(form.frameset == frameset)
            return;
        // Nettoyage de contenu du formulaire
        for(i=form.childNodes.length-1; i>=0; --i)
            form.removeChild(form.childNodes[i]);
    }
    // Stockage référence vers frameset pour vérification de modification
    form.frameset = frameset
 
    var sizes;
    var rows = false;
    /* Obtention des tailles des frames */
    if(frameset.rows) {
        rows = true;
        sizes = frameset.rows;
    } else
        sizes = frameset.cols;
 
    var framesSizes;
    var framesArray = [];
    framesSizes = sizes.split(',');
    for(i=0; i<frameset.getElementsByTagName('frame').length; ++i)
        framesArray.push(frameset.getElementsByTagName('frame')[i].name);
    /* /Obtention */
 
 // Si les deux tables (frames et tables des frames), illogisme > sortie
    if(framesSizes.length != framesArray.length)
        return;
 
 // Pour chaque frame du frameset visé
    for(i=0; i<framesArray.length; ++i)
    {
     // On crée un pushbouton
        var button = document.createElement('INPUT');
  button.type="button";
  // On stocke l'index de la frame et la taille initiale de celle ci
        button.indexValue = i;
        button.initialSize = framesSizes[i];
  // Nommage du bouton via attribut "name" de la frame
        button.value= framesArray[i];
 
  button.className = "pushed";
   
  /* Sur clic bouton:
   * Activer le lock
   * Si la frame associée est réduite, le bouton est sorti
    -> Rendre à la frame sa taille initiale
    -> Enfoncer le bouton
   * Si la frame associé n'est pas réduite, le bouton est enfoncé
    -> Stocker la taille actuelle de la frame
    -> Réduire la frame
    -> Sortir le bouton
   * Mettre à jour les tailles des frames au niveau du frameset
   * Rendre le lock
  */
        button.onclick = function () {
                frameCollapseButtonsTimerLock = true;
                var sizes = (rows?frameset.rows:frameset.cols).split("," );
                var currentSize = sizes[this.indexValue];
                if(currentSize == "0" ) {
                    sizes[this.indexValue] = this.initialSize;
                    this.className = "pushed";
                } else {
                    this.initialSize = currentSize;
                    sizes[this.indexValue]="0";
                    this.className = "poped";
                }
                if(rows)
                    frameset.rows = sizes.join("," );
                else
                    frameset.cols = sizes.join("," );
     
                frameCollapseButtonsTimerLock = false;
                return false;
            };
  // Ajouter le bouton nouvellement généré au formulaire
        form.appendChild(button);
        button = null;
    }
}
// On lance la fonction après le chargement de la page
// Puis on ajoute une exécution automatisée chaque seconde (1000ms)
addEvent(window, "load", function () {
        frameCollapseButtonsPollFrames();
        frameCollapseButtonsTimer = setInterval("frameCollapseButtonsPollFrames()",1000);
    }
);


Message édité par masklinn le 16-08-2005 à 14:30:30

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 16-08-2005 à 14:29:07    

je n'ai pas dit qu'il y avait un pb, c'est juste que je voudrai savoir s'il existe une foonction javascript (ou autre) qui me permette de faire cela.
Quelque chose de generique en fait plutot que de renterr en dur le nom de la frame ainsi que ses nombres de px

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed