Javascript, CSS - style switcher avec les cadres

Signaler
Messages postés
5
Date d'inscription
mardi 20 décembre 2005
Statut
Membre
Dernière intervention
12 mars 2009
-
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
-
Mes hommages, ç'est mon 1er post et ç'est une question assez tarabiscotée:
Je débute et je suis en train de créer mon site perso sous IE en html,CSS et javavascript; jusque là rien d'extraordinaire, mais voilà:
j'ai trouvé un style switcher en javascript qui marche, la classe je vais pouvoir faire des CSS dignes du Zen Garden!
LE PROBLEME est qu'il ne marche pas avec les frames... impossible de l'actualiser sur l'ensemble des pages simultanément... Quelqu'un peut-il me venir en aide? Mon exemple est ici (ne tenez pas compte de la bannière du haut, elle n'a pas de CSS..)

5 réponses

Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
14
B
onjour...
Le problème est que dans ta fonction tu fait réfèrence à document



function setActiveStyleSheet(title) {
var i, a, main; for(i0; (a document .getElementsByTagName("link")[i]); i++) {
if(a.getAttribute("rel").indexOf("style") ! = -1 && a.getAttribute("title")) {
a.disabled = true; if(a.getAttribute("title") title) a.disabled false;
}
}
}




Il te faudrait faire réfèrence au document de la FRAME...

un truc du style

function setActiveStyleSheet(title) {
var Doc = parent.frames['GAUCHE'].document;
var i, main;
var a = Doc

.getElementsByTagName("link");



for( i=0; i < a.length; i++) {
if(a[i].getAttribute("rel").indexOf("style") != -1 && a

[i]

.getAttribute("title")){
a

[i]

.disabled = true;
if(a

[i]

.getAttribute("title") == title) a

[i]

.disabled = false;
}
}
}




Garantie sans TEST







;0)
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
14
OULA
bonjour la grosse cagagne 1000 excuses...
;0)
Messages postés
5
Date d'inscription
mardi 20 décembre 2005
Statut
Membre
Dernière intervention
12 mars 2009

Ca fait près d'une semaine que je galère alors merci de ta réponse ;)
Mais l'hémisphère droit l' a emporté sur l'hémisphère gauche, la passion sur la logique (ou est-ce l'inverse? :s )
Bref, j'ai mis le selecteur de thêmes sur index.html (pas de frames) et là youpi ça marche sur les pages suivantes!
Du coup je vais pouvoir gribouiller un peu ça va me permettre d'oublier ces nuits tourmentées :p --> un aperçu
Enfin je persiste quand même car j'aimerais comprendre..
Malgré mes recherches et  moults tentatives (listages des frames, parent.)  je n'arrive pas à isoler la frame du styleswitcher (un id ou un Name fixe peut être?),
ni de là  à rafraîchir les autres frames... En fait je ne suis même pas sur de comprendre l'algorithme et le a.disabled ...
Quelqu'un aurait des idées ou des explications SVP ?
 
Messages postés
5
Date d'inscription
mardi 20 décembre 2005
Statut
Membre
Dernière intervention
12 mars 2009

(suite... )
D'autant que le thêmele initial s'affiche à chaque page puis bascule sur celui en cours... plutôt moche j'avoue!
Va falloir mettre toutes mes images en cache et encore...
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
14
B
onjour...
Dommage d'en rester la...

Je viens de tester et cela marche bien à condition de modifier en conséquence le fichier js

Tout d'abord plusieurs remarques
- Les fichiers .css contiennent plusieurs erreurs, une bonne adresse de test Le service de validation CSS du W3C
- La fonction createCookie M...E il manque un ;
    document.cookie = name +"=" +value +"
; " +expires +"; path =/";

Revenons au code, il te faut donc le faire evoluer pour récuperer le document de la frame
Je te livre les fonctions modifiées en espérant qu'il n'y ai pas de problème d'affichage
//---------------------------------
function setActiveStyleSheet(title){
  var Doc = parent.frames['GAUCHE'].document;
  var a = Doc.getElementsByTagName("link");
  var i;
  for( i=0; i < a.length; i++) {
    if(a[i].getAttribute("rel").indexOf("style") != -1 && a[i].getAttribute("title")){
      a[i].disabled = true;
      if(a[i].getAttribute("title") == title) a[i].disabled = false;
    }
  }
}



//----------------------------






function getActiveStyleSheet(){
  var Doc = parent.frames['



GAUCHE



'].document;
  var a = Doc.getElementsByTagName("link");
  var i;
  for( i=0; i < a.length; i++) {
    if(( a[i].getAttribute("rel").indexOf("style") != -1) &&
       ( a[i].getAttribute("title")) &&
       (!a[i].disabled))
       return a[i].getAttribute("title");
  }
  return null;
}





//-------------------------------






function getPreferredStyleSheet(){
  var Doc = parent.frames['



GAUCHE



'].document;
  var a = Doc.getElementsByTagName("link");
  var i;
  for( i=0; i < a.length; i++) {
    if(( a[i].getAttribute("rel").indexOf("style") != -1) &&
       ( a[i].getAttribute("rel").indexOf("alt") == -1) &&
       ( a[i].getAttribute("title")))
       return a[i].getAttribute("title");
  }
  return null;
}

Pour ce qui est de l'effet MOCHE c'est un problème plutôt lié au fond de couleur
Voila c'est tout...
Bonne continuation quand même...

Attention : Ce coucher tard Nuit comme disait Raymond DEVOS







;0)