Lancer une fonction javascript sans evennement ?

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics

Stellvia
WRInaute impliqué
WRInaute impliqué
 
Messages: 419
Inscription: Mar Déc 28, 2004 0:02

Lancer une fonction javascript sans evennement ?

Message le Mer Nov 14, 2007 15:50

Bonjour ,

J'utilise une fonction qui me permet de changer une partie du style css d'une page à la volée , celui ci :

http://www.alistapart.com/stories/alternate/
C'est assez connus , peut être vous connaissez ?

Bref , ca marche merveilleusement bien .

Je m'en pour permettre aux visiteurs de choisir un style avec un bouton :

Code: Tout sélectionner
  <input type="radio" name="radiobutton" value="css1" onClick="setActiveStyleSheet('css1');"><input type="radio" name="radiobutton" value="css2" onClick="setActiveStyleSheet('css2');">


Ca marche .

Bon maintenant j'ais besoin , pour une raison qui serais trop longue a expliquer ( et vous allez vous endormir avant ;) ) de lancer par cette fonction un css par défaut ( css1 par exemple )

Je fais donc un truc tout con :
<script type="text/javascript">
setActiveStyleSheet('css1');</script>

ce qui donne :


Code: Tout sélectionner
  <input type="radio" name="radiobutton" value="css1" onClick="setActiveStyleSheet('css1');"><input type="radio" name="radiobutton" value="css2" onClick="setActiveStyleSheet('css2');">
<script type="text/javascript">
setActiveStyleSheet('css1');</script>


===> ca marche pas , css1 n'est pas lancé par défaut , et je ne comprend pas pourquoi .

Je n'ais pas acces a body onload="" , car c'est une page unclude avec php , bref .... je n'ais pas acces a onload .

Le changement de css fonctionne seulement avec l'evennement onclick , pourquoi ? je n'en sais rien !!!

Connaissez vous un autre evvenement qui pourais me lancer une fonction automatiquement ?

rikew
WRInaute passionné
WRInaute passionné
 
Messages: 550
Inscription: Jeu Déc 19, 2002 19:53

Message le Mer Nov 14, 2007 16:05

Code: Tout sélectionner
<script>document.onload = tafonction()</script>


Szarah
WRInaute accro
WRInaute accro
 
Messages: 8090
Inscription: Mer Fév 22, 2006 18:24

Message le Mer Nov 14, 2007 16:09

Code: Tout sélectionner
<body ... onload="javascript:maFonction();">


ou simplement

<script type="text/javascript">
// code à exécuter
</script>


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 5224
Inscription: Mer Nov 23, 2005 10:38

Message le Mer Nov 14, 2007 16:15

Szarah a écrit:
Code: Tout sélectionner
<body ... onload="javascript:maFonction();">


ou simplement

<script type="text/javascript">
// code à exécuter
</script>


A priori il n'a pas accès à la balise body, et il a déjà testé l'appel direct à sa fonction.


Szarah
WRInaute accro
WRInaute accro
 
Messages: 8090
Inscription: Mer Fév 22, 2006 18:24

Message le Mer Nov 14, 2007 16:31

Ah oui ok.
Bin c'est que le radiobutton n'est pas adapté ?
Avec des liens peut-être ?
http://my.opera.com/Groumphy/blog/show.dml/344349

Stellvia
WRInaute impliqué
WRInaute impliqué
 
Messages: 419
Inscription: Mar Déc 28, 2004 0:02

Message le Mer Nov 14, 2007 16:40

UsagiYojimbo a écrit:
Szarah a écrit:
Code: Tout sélectionner
<body ... onload="javascript:maFonction();">


ou simplement

<script type="text/javascript">
// code à exécuter
</script>


A priori il n'a pas accès à la balise body, et il a déjà testé l'appel direct à sa fonction.


C'est tout à fait ca .

Et <script>document.onload = tafonction()</script> ne fonctionne pas non plus , par contre la fonction se lance toujours avec le onclick , ca pas de soucis .

Le onclick est sur la MEME PAGE , donc la fonction est bien operationnel .

incompréhensible ............


Jeviensderio
WRInaute accro
WRInaute accro
 
Messages: 1340
Inscription: Ven Sep 29, 2006 12:50

Message le Mer Nov 14, 2007 16:47

J'utilise window.onload.

Il peut y avoir un bug dans le code JavaScript qui précède cet appel ce qui n'a pas d'effet quand on utilise un évènement. Voir avec Firebug.

Stellvia
WRInaute impliqué
WRInaute impliqué
 
Messages: 419
Inscription: Mar Déc 28, 2004 0:02

Message le Mer Nov 14, 2007 16:53

Szarah a écrit:Ah oui ok.
Bin c'est que le radiobutton n'est pas adapté ?
Avec des liens peut-être ?
http://my.opera.com/Groumphy/blog/show.dml/344349


Bonjour Szarah , merci d'essayer de m'aider , mais je n'ais pas de soucis a faire marcher le changement de style à la volee , je me suis d'ailleurs aidé du lien que tu cite .

Je vais vous expliquer le fond du probleme mais ca va vous saouler je le sent :/ ( ^pour ca que je l'ais pas raconter au début )


Bon alors j'utilise le changement de style a la volée , ca ok tout le monde a compris .

Mais j'utilise aussi highslide , un script qui ouvre une espece de popup dhtml , hop voila le link http://vikjavev.no/highslide/ , y a des exemples direct sur la page ( regardez un exemple sinon vous allez rien piger a ma prose )

Donc , ce script utilise un div qui est chargé sur la page principale pour ouvrir une page en " faux popup " , le truc c'est que le div est DEJA chargé dans la page principal ( et non dans celle qu'on ouvre ) , donc si je veux changer le style du popup a la volé , je dois changé ce div .

Voila le fameux div :

Code: Tout sélectionner
   <div class="highslide-body"></div>   


Donc ..... j'espere que j'en ais pas perdus la moitié en route :( , il faut changer cette classe highslide-body a la volée a partir du " faux popup " , et comme je l'ais précisé dans mon premier post , je n'ais donc pas acces a body onload.

Vous me suivez jusque la ?

Attendez c est pas finis , donc je vais chercher dans une base de donnée mysql plein de variable a mettre dans mon " faux popup" , ca c'est pas dur , je peux tout changer , sauf le style du faux popup lui meme qui est deja définis dans la page principal .... comprendo ?


Du coup....... j'ais besoin de changer le style de mon " faux popup " suivant ce que j'aurais sortis de mysql , c'est pour ca que j'ais besoin de changer mon style avec le javascript et non tout simplement avec un css tout con , car je ne connais pas le style du faux popup à l'avance ....


fiou.....

bon voila je sent que mon topic est perdus avec ce pavé et je vais me prendre un vent lol


Pour ceux qui ont été jusqu'au bout voila pour vous :

Image


Szarah
WRInaute accro
WRInaute accro
 
Messages: 8090
Inscription: Mer Fév 22, 2006 18:24

Message le Mer Nov 14, 2007 17:32

Ah, ça devient du sérieux :)
A part donner un id au div et lui affecter le style paramétré en l'adressant par un getElementById, je n'imagine pas de solution.


webmasterlamogere
WRInaute accro
WRInaute accro
 
Messages: 1874
Inscription: Dim Déc 17, 2006 21:08

Message le Mer Nov 14, 2007 17:59

n'y a t'il pas déjà une fonction enregistrée avec le onload?
Sinon, il faut utiliser un code comme celui là :
Code: Tout sélectionner
if (!window.addLoadListener) {
   function addLoadListener(func) {
      if (window.addEventListener) {
         window.addEventListener("load", func, false);
      } else if (document.addEventListener) {
         document.addEventListener("load", func, false);
      } else if (window.attachEvent) {
         window.attachEvent("onload", func);
      } else if (typeof window.onload != "function") {
         window.onload = func;
      } else {
         var oldonload = window.onload;
         window.onload = function() {
            oldonload();
            func();
         }
      }
   }
}

addLoadListener(TaFonctionInitCSS);

function (TaFonctionInitCSS() {
   setActiveStyleSheet('css1');
}

Stellvia
WRInaute impliqué
WRInaute impliqué
 
Messages: 419
Inscription: Mar Déc 28, 2004 0:02

Message le Mer Nov 14, 2007 18:37

webmasterlamogere > je comprend pas trop ta fonction , mais je l'ais essayé , ca ne marche pas non plus .


Ce qui me tue c'est que ma fonction setActiveStyleSheet('css1'); marche avec le onclick , et pas autrement . Je peux pas obligé les gens a cliquer sur un bouton pour avoir la page dans le style que je veux .... c'est nul .
Je vois pas de raison , c'est débile .... C'est des trucs comme ca des fois je me dis j'aurais pas dus être webmaster .

Ca me déprime tellement c'est hors sujet je vais m'arracher les cheveux :oops: :oops: :oops:


webmasterlamogere
WRInaute accro
WRInaute accro
 
Messages: 1874
Inscription: Dim Déc 17, 2006 21:08

Message le Mer Nov 14, 2007 18:43

Stellvia a écrit:webmasterlamogere > je comprend pas trop ta fonction , mais je l'ais essayé , ca ne marche pas non plus .

Si tu attaches deux fonctions à window.onload, la deuxième écrase la première. La fonction permet de lancer plusieurs fonctions au chargement.
Mais visiblement le problème n'est pas là.

Stellvia
WRInaute impliqué
WRInaute impliqué
 
Messages: 419
Inscription: Mar Déc 28, 2004 0:02

Message le Mer Nov 14, 2007 20:01

J'ais trouvé une solution de remplacement , pour l'instant ... c'est tellement bidon j'en ais honte ...

J'ais fait un onmouseover sur la totalité du popup :

Code: Tout sélectionner
onmouseover="setActiveStyleSheet('css2');


Le style change dès que le visiteur bouge la souris ....

C'est totalement bidon mais ca marche a peu pret , en attendant de trouver mieux ..... en attendant de trouver une solution pour lancer la fonction sans evenement :/


webmasterlamogere
WRInaute accro
WRInaute accro
 
Messages: 1874
Inscription: Dim Déc 17, 2006 21:08

Message le Mer Nov 14, 2007 20:24

il y a ca sur la page -http://www.alistapart.com/stories/alternate/ :
Code: Tout sélectionner
function getPreferredStyleSheet() {
  var i, a;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1
       && a.getAttribute("rel").indexOf("alt") == -1
       && a.getAttribute("title")
       ) return a.getAttribute("title");
  }
  return null;
}

window.onload = function(e) {
  var cookie = readCookie("style");
  var title = cookie ? cookie : getPreferredStyleSheet();
  setActiveStyleSheet(title);
}


Serious
WRInaute accro
WRInaute accro
 
Messages: 2438
Inscription: Lun Nov 21, 2005 18:29

Message le Jeu Nov 15, 2007 1:33

Stellvia a écrit:Ce qui me tue c'est que ma fonction setActiveStyleSheet('css1'); marche avec le onclick


Si ta fonction marche avec un onclick, t'as qu'a faire un doClick(). Du moins, si tu es encore vivant...


Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités