11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

J'utilise un style switcher Javascript, il est compatible avec IE, Firefox et Google Chrome; mais pas avec Safari, ni avec les mobiles. J'ai cherché, que ce soit en Javascript ou en PHP, je n'ai pas trouvé de Style Switcher qui fonctionne avec Safari.

Est-ce qu'il en existe un au moins ?

Le style Switcher de mon site utilise les balises :

<link rel="alternate stylesheet" type="text/css" href="style1.css" title="Style1" media="screen" />
a écrit :
Js sur mobile? rofl


Bah oui, j'utilise également le jquery, et ça fonctionne très bien sur les smartphones. Évidement je ne parle pas des cellulaires à antenne de nos chers arrières grands parents.

Bref, je me moque un peu de la compatibilité mobile, ce que j'aimerais c'est que ça marche au moins avec safari.
Nheavy a écrit :


Bah oui, j'utilise également le jquery, et ça fonctionne très bien sur les smartphones.

Smiley biggrin

Smiley google switch css safari
Modifié par jmlapam (10 Dec 2011 - 19:10)
Merci Jmlapam, après avoir galérer pendant 2h entre différents forums anglais, j'ai trouvé ça :

Lien vers le tuto

Ça fonctionne après test, seulement j'ai un soucis pour remplacer mon switcher actuel par celui là.

En fait, mon switcher est dans un <form> comme suit :

<form id="switchform" class="choipeau" action="">
	<select name="switchcontrol" size="1" onChange="chooseStyle(this.options[this.selectedIndex].value, 60)">
	<option value="none" selected="selected">Changer le thème</option>
	<option value="Defaut">Thème par défaut</option>
	<option value="Lightning">Thème Lightning</option>
	<option value="Carbon">Thème Carbon</option>
	</select>
	</form>


Je ne voit pas comment faire en sorte que les <option> remplacent les liens du nouveau switcher qui se présente ainsi :

Javascript

(function($) {
	$.fn.styleSwitcher = function(options){		
		var defaults = {	
			slidein: true, preview: true, container: this.selector, directory: "http://www.funeralforamanga.fr/themes/", useCookie: true, cookieExpires: 30, manageCookieLoad:true	
		};
		var opts = $.extend(defaults, options);
		// if using cookies and using JavaScript to load css
		if (opts.useCookie && opts.manageCookieLoad) {
			// check if css is set in cookie
			var isCookie = readCookie("style_selected")
			if(isCookie){
				var newStyle = opts.directory + isCookie + ".css";
				$("link[id=theme]").attr("href",newStyle);
				baseStyle = newStyle;
			}
			else{
				
			}
		}		
		// if using slidein
		if(opts.slidein){
			$(opts.container).slideDown("slow");
		}
		else{
			$(opts.container).show();
		}
		var baseStyle = $("link[id=theme]").attr("href");
		if(opts.preview){
			$(opts.container + " a").hover(
				function () {
					var newStyle = opts.directory + this.id + ".css";
					$("link[id=theme]").attr("href",newStyle);
				}, 
				function () {
					$("link[id=theme]").attr("href",baseStyle);
				}
			);
		}
		
		$(opts.container + " a").click(
			function () {
				var newStyle = opts.directory + this.id + ".css";
				$("link[id=theme]").attr("href",newStyle);
				baseStyle = newStyle;
				if(opts.useCookie){
					createCookie("style_selected",this.id,opts.cookieExpires)
				}
			}
		);
		
	};
	function createCookie(name,value,days) {
		if (days) {
			var date = new Date();
			date.setTime(date.getTime()+(days*24*60*60*1000));
			var expires = "; expires="+date.toGMTString();
		}
		else var expires = "";
		document.cookie = name+"="+value+expires+"; path=/";
	}	
	function readCookie(name) {
		var nameEQ = name + "=";
		var ca = document.cookie.split(';');
		for(var i=0;i < ca.length;i++) {
			var c = ca[i];
			while (c.charAt(0)==' ') c = c.substring(1,c.length);
			if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
		}
		return null;
	}	
	function eraseCookie(name) {
		createCookie(name,"",-1);
	}
})(jQuery);


HTML

<a href="javascript: void(0)" title="switch styling" id="theme1">Default</a> | <a href="javascript: void(0)" title="switch styling" id="theme2">Darkness</a> | <a href="javascript: void(0)" title="switch styling" id="theme3">Colorful</a>


Pourriez vous m'aider à intégrer le switcher jquerry à la place de celui que j'utilise ?[/i]
Bonjour à tous, je suis nouveau sur le forum.
Je ne suis pas programmateur mais bidouille du html css (et copie colle des js quand j'en ai besoin).

J'ai également un soucis de switch css qui ne fonctionne pas sous safari.

Mes codes sont les suivants :

Dans la head :
<link href="/css/main.css" rel="stylesheet"
type="text/css" title="main" media="screen" />
<link href="/css/alt1.css" rel="alternate stylesheet"
type="text/css" title="alt1" media="screen" />
<link href="/css/alt2.css" rel="alternate stylesheet"
type="text/css" title="alt2" media="screen" />


function changeStyle(title) {
var lnks = document.getElementsByTagName('link');
for (var i = lnks.length - 1; i >= 0; i--) {
if (lnks[i].getAttribute('rel').indexOf('style')> -1 && lnks[i].getAttribute('title')) {
lnks[i].disabled = true;
if (lnks[i].getAttribute('title') == title) lnks[i].disabled = false;
}}}


Dans le body :
<span onclick="changeStyle('alt2')">Switch to second alternative stylesheet</span>


Avez-vous un conseil à me donner ?
Merci d'avance ![/i][/i][/i][/i][/i]
Modifié par guillaumeb (03 May 2012 - 15:18)