Aller au contenu

document.styleSheets[0].href = "style.css";


Sujets conseillés

Posté (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é par Dan
Posté (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é par m1111
Posté
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é.

Posté

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

Posté

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

Posté

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

Posté

Merci beaucoup pour votre aide. Je pense qu'avec ce que vous m'avez donné, je ne vais pas avoir de difficultés.

Posté

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

Posté

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

Posté

Le probleme vient du fait que l'appelle de parent.frames[0].document n'est pas compatible avec la fonction setactivestylesheet().

Posté (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é par m1111
Posté
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....

Posté

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.

Posté

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

Posté

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+

Posté (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é par m1111
Posté (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é par m1111
  • 6 months later...
Posté

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 ?

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...