Lancer une fonction javascript sans evennement ?

WRInaute impliqué
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 ?
 
WRInaute accro
Code:
<body ... onload="javascript:maFonction();">

ou simplement

<script type="text/javascript">
// code à exécuter
</script>
 
WRInaute accro
Szarah a dit:
Code:
<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.
 
WRInaute impliqué
UsagiYojimbo a dit:
Szarah a dit:
Code:
<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 ............
 
WRInaute passionné
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.
 
WRInaute impliqué
Szarah a dit:
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:
	<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 :

Eferalgan%20vitamin%20C.jpg
 
WRInaute accro
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.
 
WRInaute passionné
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');
}
 
WRInaute impliqué
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:
 
WRInaute passionné
Stellvia a dit:
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à.
 
WRInaute impliqué
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 :/
 
WRInaute passionné
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);
}
 
Nouveau WRInaute
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>
 
Discussions similaires
Haut