Question

Après avoir utilisé Packer (http://dean.edwards.name/packer/), je finis par lancer une disparue;après (la longue chaîne de packer).Je n'ai aucune idée du quoi et du pourquoi.solution possible et explication s'il vous plaît ?

jQuery.fn.extend({
ImageRotate:function(parameters)
{   
    if (this.Wilq32&&this.Wilq32.PhotoEffect) return;
    return (new Wilq32.PhotoEffect(this.get(0),parameters))._temp;
},
rotate:function(parameters)
{
    if (this.length===0) return;
    if (typeof parameters=="undefined") return;
    if (typeof parameters=="number") parameters={angle:parameters};
    var returned=[];
    for (var i=0,i0=this.length;i<i0;i++)
    {
        var element=this.get(i);    
        if (typeof element.Wilq32 == "undefined") 
            returned.push($($(element).ImageRotate(parameters)));
        else 
        {
            element.Wilq32.PhotoEffect._rotate(parameters.angle);
        }
    }
    return returned;
},

rotateAnimation:function(parameters)
{
    if (this.length===0) return;
    if (typeof parameters=="undefined") return;
    if (typeof parameters=="number") parameters={angle:parameters};
    var returned=[];
    for (var i=0,i0=this.length;i<i0;i++)
    {   
        var element=this.get(i);
        if (typeof element.Wilq32 == "undefined") 
            returned.push($($(element).ImageRotate(parameters)));
        else 
        {
            element.Wilq32.PhotoEffect._parameters.animateAngle = parameters.angle;
            element.Wilq32.PhotoEffect._parameters.callback = parameters.callback ||
            function()
            {
            };
            element.Wilq32.PhotoEffect._animateStart();
        }
    }
    return returned;
}

});

Wilq32={};

Wilq32.PhotoEffect=function(img,parameters)
{
            this._IEfix=img;
            this._parameters=parameters;
            this._parameters.className=img.className;
            this._parameters.id=img.getAttribute('id');

            if (!parameters) this._parameters={};
            this._angle=0;
            if (!parameters.angle) this._parameters.angle=0;
            this._temp=document.createElement('span');
            this._temp.Wilq32 = 
                {
                    PhotoEffect: this
                };          
            var image=img.src;
            img.parentNode.insertBefore(this._temp,img);
            this._img= new Image();
            this._img.src=image;
            this._img._ref=this;
            jQuery(this._img).bind("load", function()
            {
                this._ref._Loader.call(this._ref);
            });
            if (jQuery.browser.msie) if (this._img.complete) this._Loader();
}

Wilq32.PhotoEffect.prototype._Loader=
(function()
{
    if (jQuery.browser.msie)
    return function()
    {
        var src=this._IEfix.src;
        this._IEfix.parentNode.removeChild(this._IEfix);
        this._temp.setAttribute('id',this._parameters.id);
        this._temp.className=this._parameters.className;
        var width=this._img.width;
        var height=this._img.height;

        this._img._widthMax=this._img._heightMax=Math.sqrt((height)*(height) + (width) * (width));
        this._img._heightMax=Math.sqrt((height)*(height) + (width) * (width));

        this._vimage = document.createElement('v:image');
        this._vimage._ref=this;
        this._vimage.style.height=height;
        this._vimage.style.width=width;
        this._vimage.style.position="relative";
        this._temp.style.display="inline-block";
        this._temp.style.width=this._temp.style.height=this._img._heightMax;
        this._vimage.src=src;
        this._vimage.rotate=0;
        this._temp.appendChild(this._vimage);

        var self = this;
        this._parameters.animateAngle=0;
        if (this._parameters.bind) 
        {
            for (var a in this._parameters.bind) if (this._parameters.bind.hasOwnProperty(a)) 
            for (var b in this._parameters.bind[a]) if (this._parameters.bind[a].hasOwnProperty(b)) 
            jQuery(this._temp).bind(b,this._parameters.bind[a][b]);
        }
        this._rotate(this._parameters.angle);       

    }
    else
    return function ()
    {
        this._IEfix.parentNode.removeChild(this._IEfix);
        this._temp.setAttribute('id',this._parameters.id);
        this._temp.className=this._parameters.className;
        var width=this._img.width;
        var height=this._img.height;

        this._img._widthMax=this._img._heightMax=Math.sqrt((height)*(height) + (width) * (width));

        this._canvas=document.createElement('canvas');
        this._canvas._ref=this;
        this._canvas.height=height;
        this._canvas.width=width;

        this._canvas.setAttribute('width',width);

        this._temp.appendChild(this._canvas);

        var self = this;
        this._parameters.animateAngle=0;
        if (this._parameters.bind) 
        {
            for (var a in this._parameters.bind) if (this._parameters.bind.hasOwnProperty(a)) 
            for (var b in this._parameters.bind[a]) if (this._parameters.bind[a].hasOwnProperty(b)) 
            jQuery(this._canvas).bind(b,this._parameters.bind[a][b]);
        }
        this._cnv=this._canvas.getContext('2d');
        this._rotate(this._parameters.angle);
    }

})();

Wilq32.PhotoEffect.prototype._animateStart=function()
{   
    if (this._timer) clearTimeout(this._timer);
    this._animate();
}
Wilq32.PhotoEffect.prototype._animate=function()
{   
    var temp=this._angle;
    if (typeof this._parameters.animateAngle!="undefined") this._angle-=(this._angle-this._parameters.animateAngle)*0.1;
    if (typeof this._parameters.minAngle!="undefined") if (this._angle<this._parameters.minAngle) this._angle=this._parameters.minAngle;
    if (typeof this._parameters.maxAngle!="undefined") if (this._angle>this._parameters.maxAngle) this._angle=this._parameters.maxAngle; 

    if (Math.round(this._angle * 100 - temp * 100) == 0 && this._timer) 
        {
            clearTimeout(this._timer);
            if (this._parameters.callback) 
                this._parameters.callback();
        }
        else 
        {
            this._rotate(this._angle);
            var self = this;
            this._timer = setTimeout(function()
            {
                self._animate.call(self);
            }, 10);
        }
}

Wilq32.PhotoEffect.prototype._rotate = (function()
{
    if (jQuery.browser.msie)
    return function(angle)
    {
        this._vimage.style.rotation=angle;
        var radians=angle*Math.PI/180;
        this._vimage.style.top=  (this._img._heightMax - this._img.height)/2- (this._vimage.offsetHeight-this._img.height)/2 +"px";
        this._vimage.style.left= (this._img._widthMax - this._img.width)/2- (this._vimage.offsetWidth-this._img.width)/2 +"px";
    }
    else
    return function(angle)

    {

        if (!this._img.width) return;
        if (typeof angle!="number") return;
        angle=(angle%360)* Math.PI / 180;
        var width=this._img.width;
        var height=this._img.height;
        var widthAdd = this._img._widthMax - width;
        var heightAdd = this._img._heightMax - height;
        this._canvas.width = width+widthAdd;
        this._canvas.height = height+heightAdd;
        this._cnv.save();
        this._cnv.translate(widthAdd/2,heightAdd/2);
        this._cnv.translate(width/2,height/2); 
        this._cnv.rotate(angle);
        this._cnv.translate(-width/2,-height/2);
        this._cnv.drawImage(this._img, 0, 0);
        this._cnv.restore();
    }


})();
Était-ce utile?

La solution

Packer confie tout sur une ligne si je ne me trompe pas, de sorte que tout point-virgule manquant qui aurait été analysé à l'origine, ok se transforment en erreurs difficiles.

Il y a quelques points-virgules manquants dans votre JS par exemple

return function(angle)
{
    this._vimage.style.rotation=angle;
    var radians=angle*Math.PI/180;
    this._vimage.style.top=  (this._img._heightMax - this._img.height)/2- (this._vimage.offsetHeight-this._img.height)/2 +"px";
    this._vimage.style.left= (this._img._widthMax - this._img.width)/2- (this._vimage.offsetWidth-this._img.width)/2 +"px";
}

manque un point-virgule.Il y a plus.

Autres conseils

Voici un joli site qui vous dira ce qui ne va pas avec votre javascript : http://jslint.com/

Alors collez là votre code, cliquez sur le JSLint et observez les erreurs et les avertissements que vous recevez.Une fois que vous les aurez corrigés, vous pouvez être sûr qu'une fois compressé, votre javascript fonctionnera.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top