Bonjour à toutes et tous,
J'essaye de me faire un petit styleswitcher en javascript... Actuellement, çà fonctionne sur Firefox et Internet Explorer mais sur Opera, le comportement diffère...
Lorsque je clique sur le lien généré, le changement de style fonctionne dans un sens comme dans l'autre sur tous les navigateurs mais, en revanche, le lien se désactive sous Opera et je ne peux plus revenir en arrière... Mon plus gros problème est que je n'ai aucune erreur apparente et, malgré quelques essais, je n'arrive pas à supprimer ce blocage...
Quelqu'un peut-il me venir en aide ?
HTML (index.htm)
HTML (test.htm)
Javascript
Voilà, si quelqu'un trouve d'où vient le problème, je ne lui en serais que plus reconnaissant...
Merci de votre attention !
Modifié par koala64 (08 Jun 2006 - 07:58)
J'essaye de me faire un petit styleswitcher en javascript... Actuellement, çà fonctionne sur Firefox et Internet Explorer mais sur Opera, le comportement diffère...
Lorsque je clique sur le lien généré, le changement de style fonctionne dans un sens comme dans l'autre sur tous les navigateurs mais, en revanche, le lien se désactive sous Opera et je ne peux plus revenir en arrière... Mon plus gros problème est que je n'ai aucune erreur apparente et, malgré quelques essais, je n'arrive pas à supprimer ce blocage...
Quelqu'un peut-il me venir en aide ?
HTML (index.htm)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<title>Styleswitcher</title>
<link rel="stylesheet" type="text/css" media="screen,projection" href="style.css" />
<script type="text/javascript" src="styleswitcher.js"></script>
</head><body>
<p><a href="test.htm">Test</a></p>
</body></html>
HTML (test.htm)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<title>Styleswitcher (test)</title>
<link rel="stylesheet" type="text/css" media="screen,projection" href="style.css" />
<script type="text/javascript" src="styleswitcher.js"></script>
</head><body>
<p><a href="index.htm">Retour</a></p>
</body></html>
Javascript
var d = document;
var o = new Object;
o.Script =
{
__Init: function()
{
o.StyleSwitcher.__Init();
}
}
window.onload = o.Script.__Init;
o.Cookie =
{
__Set: function( sName , sValue , oExpires , sPath , sDomain , bSecure )
{
var sCookie = sName + "=" + encodeURIComponent( sValue );
if( oExpires )
sCookie += "; expires=" + oExpires.toGMTString();
if( sPath )
sCookie += "; path=" + sPath;
if( sDomain )
sCookie += "; domain=" + sDomain;
if( bSecure )
sCookie += "; secure";
d.cookie = sCookie;
},
__Get: function( sName )
{
var sRE = "(?:; )?" + sName + "=([^;]*);?";
var oRE = new RegExp( sRE );
if ( oRE.test( document.cookie ) )
return decodeURIComponent( RegExp["$1"] );
else
return null;
}
}
o.StyleSwitcher =
{
__Init: function()
{
var oStyle = d.getElementsByTagName( 'link' )[0];
var sCookie = o.Cookie.__Get( 'sStyle' );
if( sCookie != null )
oStyle.setAttribute( 'href' , sCookie );
else
{}
var oP = d.createElement( 'p' );
var oSwitch = d.createElement( 'a' );
oSwitch.setAttribute( 'href' , '#' );
var oTextSwitch = d.createTextNode( '' );
oTextSwitch.data = 'Changer de style';
var oBody = d.getElementsByTagName( 'body' )[0];
oBody.appendChild( oP );
oP.appendChild( oSwitch );
oSwitch.appendChild( oTextSwitch );
oSwitch.onclick = o.Methode.__Change;
}
}
o.Methode =
{
__Change: function()
{
var sStyle = o.Cookie.__Get( 'sStyle' );
var oStyle = d.getElementsByTagName( 'link' )[0];
if( sStyle == 'style.css' )
oStyle.setAttribute( 'href' , 'style2.css' );
else if( sStyle == 'style2.css' )
oStyle.setAttribute( 'href' , 'style.css' );
else
oStyle.setAttribute( 'href' , 'style2.css' );
o.Cookie.__Set( 'sStyle' , oStyle.getAttribute( 'href' ) );
return false;
}
}
Voilà, si quelqu'un trouve d'où vient le problème, je ne lui en serais que plus reconnaissant...

Merci de votre attention !

Modifié par koala64 (08 Jun 2006 - 07:58)