11540 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

voilà j'utilisais un code que j'ai glané sur le web pour effectuer un slide (par scrollto) d'un titre et du contenu de mes pages, mais depuis que je suis passé sous jquery 1.8.0 (pour l'utilisation d'autres scripts comme fancybox) j'ai une erreur en retour console que je n'arrive pas à résoudre :

TypeError: $.curCSS is not a function
var start = $.curCSS(fx.elem,'backgroundPosition');


Voici le script que j'utilise :


(function($) {
	if(!document.defaultView || !document.defaultView.getComputedStyle){ // IE6-IE8
		var oldCurCSS = jQuery.curCSS;
		jQuery.curCSS = function(elem, name, force){
			if(name === 'background-position'){
				name = 'backgroundPosition';
			}
			if(name !== 'backgroundPosition' || !elem.currentStyle || elem.currentStyle[ name ]){
				return oldCurCSS.apply(this, arguments);
			}
			var style = elem.style;
			if ( !force && style && style[ name ] ){
				return style[ name ];
			}
			return oldCurCSS(elem, 'backgroundPositionX', force) +' '+ oldCurCSS(elem, 'backgroundPositionY', force);
		};
	}
	
	var oldAnim = $.fn.animate;
	$.fn.animate = function(prop){
		if('background-position' in prop){
			prop.backgroundPosition = prop['background-position'];
			delete prop['background-position'];
		}
		if('backgroundPosition' in prop){
			prop.backgroundPosition = '('+ prop.backgroundPosition;
		}
		return oldAnim.apply(this, arguments);
	};
	
	function toArray(strg){
		strg = strg.replace(/left|top/g,'0px');
		strg = strg.replace(/right|bottom/g,'100%');
		strg = strg.replace(/([0-9\.]+)(\s|\)|$)/g,"$1px$2");
		var res = strg.match(/(-?[0-9\.]+)(px|\%|em|pt)\s(-?[0-9\.]+)(px|\%|em|pt)/);
		return [parseFloat(res[1],10),res[2],parseFloat(res[3],10),res[4]];
	}
	
	$.fx.step. backgroundPosition = function(fx) {
		if (!fx.bgPosReady) {
			var start = $.curCSS(fx.elem,'backgroundPosition');
			
			if(!start){//FF2 no inline-style fallback
				start = '0px 0px';
			}
			
			start = toArray(start);
			
			fx.start = [start[0],start[2]];
			
			var end = toArray(fx.options.curAnim.backgroundPosition);
			fx.end = [end[0],end[2]];
			
			fx.unit = [end[1],end[3]];
			fx.bgPosReady = true;
		}
		//return;
		var nowPosX = [];
		nowPosX[0] = ((fx.end[0] - fx.start[0]) * fx.pos) + fx.start[0] + fx.unit[0];
		nowPosX[1] = ((fx.end[1] - fx.start[1]) * fx.pos) + fx.start[1] + fx.unit[1];           
		fx.elem.style.backgroundPosition = nowPosX[0]+' '+nowPosX[1];

	};
})(jQuery);


et mon code html :

	<div id="title">
		<div id="controlContainer">
			<h1></h1>
			<div id="title2"></div>
			<div id="title3"></div>
			<a href="#" id="prevControl" class="noScroll">prev</a>
			<a href="#" id="nextControl" class="goto_about">next</a>
		</div>
	</div>


merci d'avance de votre aide car je débute en js et je sèche un peu !
Modifié par Claymenia (28 Aug 2012 - 15:47)
La fonction non documentée jQuery.curCss a été supprimée dans jQuery 1.8. C'est en fait un simple alias de jQuery.css...
Bref, cherche une mise à jour du ou des plugs-in qui utilisent cette fonction Smiley smile

(à savoir que curCss date de jQuery 1.3)