Lancer une fonction javascript sans evennement ?

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par Stellvia, 14 Novembre 2007.

  1. Stellvia
    Stellvia WRInaute impliqué
    Inscrit:
    28 Décembre 2004
    Messages:
    566
    J'aime reçus:
    5
    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:
      <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:
      <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 ?
     
  2. rikew
    rikew WRInaute impliqué
    Inscrit:
    19 Décembre 2002
    Messages:
    683
    J'aime reçus:
    2
    Code:
    <script>document.onload = tafonction()</script>
     
  3. Szarah
    Szarah WRInaute accro
    Inscrit:
    22 Février 2006
    Messages:
    5 997
    J'aime reçus:
    1
    Code:
    <body ... onload="javascript:maFonction();">
    ou simplement

    <script type="text/javascript">
    // code à exécuter
    </script>
     
  4. UsagiYojimbo
    UsagiYojimbo WRInaute accro
    Inscrit:
    23 Novembre 2005
    Messages:
    12 011
    J'aime reçus:
    133
    A priori il n'a pas accès à la balise body, et il a déjà testé l'appel direct à sa fonction.
     
  5. Szarah
    Szarah WRInaute accro
    Inscrit:
    22 Février 2006
    Messages:
    5 997
    J'aime reçus:
    1
  6. Stellvia
    Stellvia WRInaute impliqué
    Inscrit:
    28 Décembre 2004
    Messages:
    566
    J'aime reçus:
    5
    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 ............
     
  7. Jeviensderio
    Jeviensderio WRInaute passionné
    Inscrit:
    29 Septembre 2006
    Messages:
    1 053
    J'aime reçus:
    0
    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.
     
  8. Stellvia
    Stellvia WRInaute impliqué
    Inscrit:
    28 Décembre 2004
    Messages:
    566
    J'aime reçus:
    5
    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:
    	<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 :

    [​IMG]
     
  9. Szarah
    Szarah WRInaute accro
    Inscrit:
    22 Février 2006
    Messages:
    5 997
    J'aime reçus:
    1
    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.
     
  10. webmasterlamogere
    webmasterlamogere WRInaute passionné
    Inscrit:
    17 Décembre 2006
    Messages:
    1 646
    J'aime reçus:
    1
    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:
    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');
    }
     
  11. Stellvia
    Stellvia WRInaute impliqué
    Inscrit:
    28 Décembre 2004
    Messages:
    566
    J'aime reçus:
    5
    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:
     
  12. webmasterlamogere
    webmasterlamogere WRInaute passionné
    Inscrit:
    17 Décembre 2006
    Messages:
    1 646
    J'aime reçus:
    1
    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à.
     
  13. Stellvia
    Stellvia WRInaute impliqué
    Inscrit:
    28 Décembre 2004
    Messages:
    566
    J'aime reçus:
    5
    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:
    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 :/
     
  14. webmasterlamogere
    webmasterlamogere WRInaute passionné
    Inscrit:
    17 Décembre 2006
    Messages:
    1 646
    J'aime reçus:
    1
    il y a ca sur la page -http://www.alistapart.com/stories/alternate/ :
    Code:
     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);
    }
     
  15. Serious
    Serious WRInaute passionné
    Inscrit:
    21 Novembre 2005
    Messages:
    1 834
    J'aime reçus:
    0
    Si ta fonction marche avec un onclick, t'as qu'a faire un doClick(). Du moins, si tu es encore vivant...
     
  16. syl3035
    syl3035 Nouveau WRInaute
    Inscrit:
    18 Mai 2012
    Messages:
    1
    J'aime reçus:
    0
    Bonjour

    Voici la solution : déclaré la function et seulement ensuite la lancer.
    exemple déclaration
    <script type="text/javascript">
    setActiveStyleSheet(type)
    {
    blabla bla;
    }
    </script>

    exemple de lancement
    <script type="text/javascript"> setActiveStyleSheet('css1');</script>
     
Chargement...
Similar Threads - Lancer fonction javascript Forum Date
lancer fonction lorsque page chargée Développement d'un site Web ou d'une appli mobile 24 Octobre 2009
Comment lancer du Javascript sans html ? Développement d'un site Web ou d'une appli mobile 28 Avril 2021
Lancer mon site internet ou pas ? Problèmes de référencement spécifiques à vos sites 24 Août 2019
Je vais lancer un site en anglais/américain, des conseils svp? Débuter en référencement 5 Mars 2019
[Freelancer]-Job Board innovant Demandes d'avis et de conseils sur vos sites 16 Avril 2018
Ancienneté du nom de domaine avant de se lancer : attendre ou se lancer tout de suite ? Débuter en référencement 19 Octobre 2017
Conseils pour lancer une pub sur facebook pour récolter des j'aime Facebook 3 Septembre 2017
lancer son e-commerce Débuter en référencement 22 Mars 2017
Aide pour lancer une campagne adwords AdWords 5 Juin 2016
Lancer un nouveau site Débuter en référencement 12 Avril 2016
Comment toucher 2 ans de chômage pour lancer son entreprise ? Le café de WebRankInfo 20 Juin 2015
Questions en vrac avant de me lancer dans ce projet de site Développement d'un site Web ou d'une appli mobile 12 Septembre 2013
Le site Calculatrice.info mis à jour : comment relancer le site ? Demandes d'avis et de conseils sur vos sites 30 Juin 2013
Facebook va lancer son Adsense Facebook 28 Novembre 2012
Vos stratégies pour lancer une campagne AdWords ? AdWords 27 Novembre 2012
Impossible de relancer le trafic suite pénalité Google Problèmes de référencement spécifiques à vos sites 20 Novembre 2012
La France doit-elle lancer son Google ? Google : l'entreprise, les sites web, les services 6 Novembre 2012
Faire de la publicité pour lancer son entreprise Problèmes de référencement spécifiques à vos sites 11 Avril 2012
Site optimisé OK. Et maintenant? Quel étape pour lancer son site? Débuter en référencement 27 Octobre 2011
Copyrights : création d'un site web par un freelancer Droit du web (juridique, fiscalité...) 14 Octobre 2011