m1111 Posté 5 Mai 2004 Posté 5 Mai 2004 (modifié) Mon problème est simple, cette ligne : document.styleSheets[0].href="style.css"; fonctionne avec Internet Explorer mais pas avec Mozilla ou Netscape, que dois-je faire pour que cela fonctionne ? Voici toute la fonction : <script>function skin(){ if (document.forms[0].selectskin.options[0].selected) { document.styleSheets[0].href="style.css"; } if (document.forms[0].selectskin.options[1].selected) { document.styleSheets[0].href="style2.css"; } if (document.forms[0].selectskin.options[2].selected) { document.styleSheets[0].href="style3.css"; }}</script><form><select name="selectskin" onChange="skin()"> <option value="0" selected>Light</option> <option value="1">Dark</option> <option value="2">Fantasy</option></select></form> Merci d'avance (le problème ne vient que de : document.styleSheets[0].href="style.css"; le reste passe nickel). Modifié 5 Mai 2004 par Dan
Bobe Posté 5 Mai 2004 Posté 5 Mai 2004 La propriété href est en lecture seule: http://www.yoyodesign.org/doc/w3c/dom2/sty...pt-binding.html
m1111 Posté 5 Mai 2004 Auteur Posté 5 Mai 2004 (modifié) Désolé de ne pas être très doué, le lien que tu m'as donné est très intéressant mais je n'ai toujours pas compris pourquoi ça n'allait pas pour mozilla et ce qu'il fallait que je fasse pr que cela fonctionne. Modifié 5 Mai 2004 par m1111
Bobe Posté 5 Mai 2004 Posté 5 Mai 2004 dsl de pas être très doué mais le lien que tu m'as donné est très intéressant mais je n'ai tjs pas compris pourquoi ça n'allait pas pr mozilla et ce qu'il fallait que je fasse pr que ça fonctionne. la propriété href est en lecture seul, ce qui signifie qu'on ne peut pas modifier son contenu. IE et autres navigateurs sont dans l'erreur s'ils permettent de modifier cette propriété.
pitidev Posté 5 Mai 2004 Posté 5 Mai 2004 tu peux acceder a l'information mais tu ne peux pas la modifier... donc les navigateurs standarts ne prennent pas en compte ton affectation. voila comment je le comprends
Clair de Lune Posté 5 Mai 2004 Posté 5 Mai 2004 bonjour je ne suis pas très fort en javascript, c'est peut-être idiot ce que je dis, ne peux tu pas utiliser document.write pour modifier la propriété ? et sinon, puisque tu sembles chercher un script pour changer dynamiquement une feuille de style, essaye celui-ci, c'est vraiment compatible : styleswitcher
Dinostrate Posté 5 Mai 2004 Posté 5 Mai 2004 Bonsoir m1111 Je confirme l'avis de Clairdelune au sujet du choix de feuille de style. Le script sur le lien qu'il donne fonctionne très bien. il doit être utilisé avec <link rel="stylesheet" ........ et <link rel="alternate stylesheet" ...... le mode opératoire est très clair. C'est aussi ce genre de script que j'utilise sur mon site. Dino
m1111 Posté 5 Mai 2004 Auteur Posté 5 Mai 2004 Merci beaucoup pour votre aide. Je pense qu'avec ce que vous m'avez donné, je ne vais pas avoir de difficultés.
m1111 Posté 6 Mai 2004 Auteur Posté 6 Mai 2004 j'aurai encore une question,le système que vous m'avez donné fonctionne très bien mais j'ai un problème car je travaille avec des frames et je n'arrive pas à changer le style dans toutes les frames. j'ai essayé d'ouvrir la fonction dans chaque page en chargeant un script et d'appliquer aux frames de cette manière : function skin() { if (document.forms[0].selectskin.options[0].selected) { parent.frames[0].document.setActiveStyleSheet("bleu"); parent.frames[1].document.setActiveStyleSheet("bleu"); parent.frames[2].document.setActiveStyleSheet("bleu"); } } Merci d'avance
Dinostrate Posté 6 Mai 2004 Posté 6 Mai 2004 Je n'ai jamais essayé avec des frames... A mon avis, d'abord, il te faut peut être essayer de voir si le problème vient de l'html ou du script. Donc, fais un test avec mozilla par exemple, qui dispose d'une fonction pour changer de feuille css, déjà, tu verras si ça fonctionne normalement ou pas. Dino
m1111 Posté 6 Mai 2004 Auteur Posté 6 Mai 2004 Le probleme vient du fait que l'appelle de parent.frames[0].document n'est pas compatible avec la fonction setactivestylesheet().
m1111 Posté 6 Mai 2004 Auteur Posté 6 Mai 2004 (modifié) J'ai essayé avec mozilla pour changer la feuille de style avec l'option du navigateur et ça fonctionne très bien, ça modifie pour toutes les frames. Comment dois-je faire ? Comment mozilla fait-il pour changer les styles de toutes les forms. Quel fonction utilise-t-il ? Merci d'avance. Modifié 6 Mai 2004 par m1111
Dinostrate Posté 6 Mai 2004 Posté 6 Mai 2004 Comment mozilla fait-il pour changer les styles de toutes les forms. Quel fonction utilise-t-il ? Là je ne peux pas te répondre, je n'ai jamais décortiqué mozilla, et je ne suis pas certain de savoir le faire.... En tout cas, on sait que ça vient du script. Je suppose que la modif se fait seulement sur la page ou tu actives le script ? Dans ce cas, il y a peut être une solution, mais je dis ça a l'intuition..... et je ne suis pas du tout sur de moi... Est ce que le cookie se place bien ? Est ce que si tu réactualises la page, il y a du mieux ? Si oui, il faut peut être "obliger" une réactualisation de la page qui sert de contenant. Sinon, je ne vois pas pour l'instant....
m1111 Posté 6 Mai 2004 Auteur Posté 6 Mai 2004 C'est dommage, en réactulisant la page, ça marche pas mais c'était bien pensé. En tout cas merci pour l'aide. Je vais continuer à chercher et espérer une super réponse.
Dinostrate Posté 6 Mai 2004 Posté 6 Mai 2004 Conceptuellement, cette question m'interesse, et je suis en train de me poser des questions loufoques... je me demande s'il ne faudrait pas générer autant de cookies différents que de frames.... bon, je suis toujours à l'intuition.... A plus tard
Dinostrate Posté 6 Mai 2004 Posté 6 Mai 2004 Je te suggère un autre essai : tu crées une page sans frame ou tu place le script. ça devrait fonctionner sans problème pour cette page.... et ensuite, tu reviens sur une page avec frame.... et là, voir si ça marche.... (si ça ne marche pas : peut-être que mon idée loufoque....) Bon, cette fois, je quitte, a+
m1111 Posté 6 Mai 2004 Auteur Posté 6 Mai 2004 (modifié) Je ne pense pas que cela soit si compliqué. L'erreur est la suivante lorsque je cherche à 'charger' le style dans une frame de cette manière (parent.frames[0].document.setactiveStyleSheet("bleu") : Cet objet ne gère pas cette propriété ou cette méthode Voilà, je sais pas si ça va servir à grand chose de savoir ça mais bon... Moi je pense qu'il faut plutôt écrire la fonction de tel sorte qu'elle attende le nom d'une frame en argument mais je vois pas comment faire. So I need your help. Merci d'avance. PS : Le fait de revenir sur une page avec frame ne fonctionne pas. Modifié 6 Mai 2004 par m1111
m1111 Posté 6 Mai 2004 Auteur Posté 6 Mai 2004 (modifié) Bon bah voilà, j'avais raison, c'était pas bien compliqué. Il suffisait de changer un peu la fonction. Donc, si ça intéresse quelques personnes la voici : (écrit proprement) function setActiveStyleSheet(title) { var i, a, main; for(i=0; (a = parent.frames[0].document.getElementsByTagName("link")); i++) { if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) { a.disabled = true; if(a.getAttribute("title") == title) a.disabled = false; } } for(i=0; (a = parent.frames[1].document.getElementsByTagName("link")); i++) { if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) { a.disabled = true; if(a.getAttribute("title") == title) a.disabled = false; } } for(i=0; (a = parent.frames[2].document.getElementsByTagName("link")); i++) { if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) { a.disabled = true; if(a.getAttribute("title") == title) a.disabled = false; } } for(i=0; (a = parent.frames[3].document.getElementsByTagName("link")); i++) { if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) { a.disabled = true; if(a.getAttribute("title") == title) a.disabled = false; } } } Modifié 6 Mai 2004 par m1111
raaven Posté 26 Novembre 2004 Posté 26 Novembre 2004 Excusez-moi, je n'y connais pas grand chose et j'aimerais utiliser cette fonction pour une iframe. Pourriez-vous m'indiquer quels éléments modifier ?
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant