11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

je viens solliciter votre aide car, professionnel sur ebay, j'ai eu envie de créer ma propre page d'accueil, attrayante et présentant mieux mes produits. J'ai alors étudié la chose et réalisé entièrement cette page (ce qui m'a valu plus de 200 heures de travail) pour arriver à un résultat, je crois plutôt bon. Fini de réaliser, je vais pour charger la page, et là, douche froide, les scripts me sont refusés.

J'ai d'abord remarqué que le simple fait de mettre src=" à la suite de javascript bloquait le chargement de la page. Il n'est pas possible non plus d'utiliser de balises iframe.

J'ai étudié la chose et m'aperçois que lorsque j'intègre les scripts directement dans la page html, ils ne sont pas refusé totalement. J'ai réussi ce matin à faire passer un script en supprimant ceci dans le code : replace("px",""))+parseInt(l.css("padding-top").replace("px",""))-1;l

Il me reste 2 scripts, à savoir un carousellite modifié et jquery-1.3.2.min. Le problème est que je ne connais rien au javascript et que le simple fait de supprimer eval(function(p,a,c,k,e,r) au début du code javascript du carousellite le fait ne plus fonctionner...

Il doit y avoir une solution à tout ça, je pense que vous serez à même de comprendre mon désarrois, et que vous comprenez ce que veut dire passer des heures sur une réalisation.

Merci à vous,

Cordialement.
Modifié par crea1 (15 Feb 2010 - 12:45)
Bonjour,

je reviens vers vous car le problème a été identifié et partiellement résolu. Ceci dit, il reste des parties de code de jquery qui causent problème. Le dernier plugin ayant été remplacé par un code non compressé le problème est résolu pour celui-ci.

Concernant jquery, le problème vient de la fonction "replace." Sous le conseil d'un personne, j'ai alors remplacé le maximum de fonction replace par "parseInt(l.css("padding-top"))". Ce qui a réglé le problème pour une grande majorité; Ceci dit, il reste 8 fonctions replace dans le code (très chargé) que je n'arrive pas à remplacer. Aurez-vous une solution?

Voici les parties de code où se trouve les fonctions replace restantes :
(je vous communique de "gros paquets", sait-on jamais, la partie à remplacer est peut-être longue)

replace(/([A-Z])/g,"-$1").toLowerCase();var getComputedStyle=document.defaultView.getComputedStyle(elem,null);if(getComputedStyle&&!color(elem))ret=getComputedStyle.getPropertyValue(name);else{var swap=[],stack=[];for(var a=elem;a&&color(a);a=a.parentNode)stack.unshift(a);for(var i=0;i<stack.length;i++)if(color(stack[i])){swap[i]=stack[i].style.display;stack[i].style.display="block";
 
.....
 
replace(/(<(\w+)[^>]*?)\/>/g,function(all,front,tag){return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?all:front+"></"+tag+">";});var tags=jQuery.trim(elem).toLowerCase(),div=context.createElement("div");var wrap=!tags.indexOf("<opt")&&[1,"<select multiple='multiple'>","</select>"]||!tags.indexOf("<leg")&&[1,"<fieldset>","</fieldset>"]||tags.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"<table>","</table>"]||!tags.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||(!tags.indexOf("<td")||!tags.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||!tags.indexOf("<col")&&[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"]||jQuery.browser.msie&&[1,"div<div>","</div>"]||[0,"",""];div.innerHTML=wrap[1]+elem+wrap[2];while(wrap[0]--)div=div.lastChild;if(jQuery.browser.msie){var tbody=!tags.indexOf("<table")&&tags.indexOf("<tbody")<0?div.firstChild&&div.firstChild.childNodes:wrap[1]=="<table>"&&tags.indexOf("<tbody")<0?div.childNodes:[];for(var j=tbody.length-1;j>=0;--j)if(jQuery.nodeName(tbody[j],"tbody")&&!tbody[j].childNodes.length)tbody[j].parentNode.removeChild(tbody[j]);
 
.....
 
replace(/-([a-z])/ig,function(all,letter){return letter.toUpperCase();});if(value!=undefined)elem[name]=value;return elem[name];}},trim:function(text){return(text||"").
 
.....
 
replace(/^\s+|\s+$/g,"");},makeArray:function(array){var ret=[];if(array.constructor!=Array)for(var i=0,length=array.length;i<length;i++)ret.push(array[i]);else
ret=array.slice(0);return ret;},inArray:function(elem,array){for(var i=0,length=array.length;i<length;i++)if(array[i]==elem)return i;return-1;},merge:function(first,second){if(jQuery.browser.msie){for(var i=0;second[i];i++)if(second[i].nodeType!=8)first.push(second[i]);}else
for(var i=0;second[i];i++)first.push(second[i]);return first;},unique:function(array){var ret=[],done={};try{for(var i=0,length=array.length;i<length;i++){var id=jQuery.data(array[i]);if(!done[id]){done[id]=true;ret.push(array[i]);}}}catch(e){ret=array;}return ret;},grep:function(elems,callback,inv){var ret=[];for(var i=0,length=elems.length;i<length;i++)if(!inv&&callback(elems[i],i)||inv&&!callback(elems[i],i))ret.push(elems[i]);
 
.....
 
replace(/^\s*,\s*/,"");cur=not?elems=f.r:jQuery.merge(cur,f.r);}return cur;},find:function(t,context){if(typeof t!="string")return[t];if(context&&context.nodeType!=1&&context.nodeType!=9)return[];context=context||document;var ret=[context],done=[],last,nodeName;while(t&&last!=t){var r=[];last=t;t=jQuery.trim(t);var foundToken=false;var re=quickChild;var m=re.exec(t);if(m){nodeName=m[1].toUpperCase();
 
.....
 
replace(/\\/g,"");var elem=ret[ret.length-1];if(m[1]=="#"&&elem&&elem.getElementById&&!jQuery.isXMLDoc(elem)){var oid=elem.getElementById(m[2]);if((jQuery.browser.msie||jQuery.browser.opera)&&oid&&typeof oid.id=="string"&&oid.id!=m[2])oid=jQuery('[@id="'+m[2]+'"]',elem)[0];ret=r=oid&&(!m[3]||jQuery.nodeName(oid,m[3]))?[oid]:[];}else{for(var i=0;ret[i];i++){var tag=m[1]=="#"&&m[3]?m[3]:m[1]!=""||m[0]==""?"*":m[2];if(tag=="*"&&ret[i].nodeName.toLowerCase()=="object")tag="param";
 
.....
 
replace(re2,"");}}if(t){var val=jQuery.filter(t,r);ret=r=val.r;t=jQuery.trim(val.t);}}if(t)ret=[];if(ret&&context==ret[0])ret.shift();done=jQuery.merge(done,ret);return done;},classFilter:function(r,m,not){m=" "+m+" ";var tmp=[];
 
.....
 
replace(/\\/g,"");break;}}if(!m)break;if(m[1]==":"&&m[2]=="not")r=isSimple.test(m[3])?jQuery.filter(m[3],r,true).r:jQuery(r).not(m[3]);else if(m[1]==".")r=jQuery.classFilter(r,m[2],not);else if(m[1]=="["){var tmp=[],type=m[3];for(var i=0,rl=r.length;i<rl;i++){var a=r[i],z=a[jQuery.props[m[2]]||m[2]];if(z==null||/href|src|selected/.test(m[2]))z=jQuery.attr(a,m[2])||'';if((type==""&&!!z||type=="="&&z==m[5]||type=="!="&&z!=m[5]||type=="^="&&z&&!z.indexOf(m[5])||type=="$="&&z.substr(z.length-m[5].length)==m[5]||(type=="*="||type=="~=")&&z.indexOf(m[5])>=0)^not)tmp.push(a);}r=tmp;}else if(m[1]==":"&&m[2]=="nth-child"){var merge={},tmp=[],test=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(m[3]=="even"&&"2n"||m[3]=="odd"&&"2n+1"||!/\D/.test(m[3])&&"0n+"+m[3]||m[3]),first=(test[1]+(test[2]||1))-0,last=test[3]-0;


Merci à vous,

Cordialement[/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i]
Modifié par crea1 (17 Feb 2010 - 13:15)
Salut,

C'est pas un peu lourd d'utiliser un frameworks non compressé pour ebay ?

Je vient t'aider à transformer les replace mais on peut utiliser match ? Ce serait bien aussi de mettre une explication sur ce que fait le replace, historie d'être sur d'avoir comprit son utilité.
Bonsoir,

En effet, la taille autorisée par ebay m'a obligé à descendre à la version 1.2.4 (à la base 1.3.2).
Quant à la version "packed", elle ne semble pas pouvoir passer sur ebay. En effet, le simple fait de charger "eval(function(p,a,c,k,e,r)" est un problème, et supprimer ceci suffit à ne plus faire fonctionner le plugin.

Qu'entendez-vous par utiliser match? Je n'ai aucun idée de ce que font les fonctions replace, souhaitez-vous que je vous communique le code javascript avec les fonctions corrigées et restantes?
j'ai également découvert (j'ai épluché paquet par paquet le script) 3 lignes qui causent problèmes :

jQuery.globalEval(elem.text||elem.textContent||elem.innerHTML||"");if(elem.parentNode)

[2]];if(typeof fn=="string")fn=eval("false||function(a,i){return "+fn+";}")


ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest();xml.open(s.type,s.url,s.async,s.username,s.password);try{if(s.data)xml.setRequestHeader("Content-Type",s.contentType)


Merci à vous,

Cordialement.
Bonjour,

le problème des fonctions replace a été résolu en les remplaçant par split('\\').join('').
Le plugin n'est pas atteint et la page passe, ceci dit, ces changements ont eu pour effet de créer un trouble visiblement avec ce qui est défini dans le css. En effet, le container du carrousel est plus large et décalé et le contenu plus espacé, le slide est en bas de page et sur la page les liens se sont déplacés...
Avez-vous une explication et cela peut-il être corrigé?


Edit :

dans cette même problématique. Suite au remplacement des fonctions replace. Afin de ne pas causer les problèmes "d'affichage" exposés plus haut, que proposerez-vous comme codes pour remplacer ces 2 lignes :

replace(/([A-Z])/g,"-$1").toLowerCase()
 
replace(/(<(\w+)[^>]*?)\/>/g,function(all,front,tag){return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?all:front+"></"+tag+">";});


En effet, ces lignes restent le seul problème et celles qui une fois modifiées par split('\\').join('') (non adapté à ces lignes) causent les problèmes "d'affichage".

Merci à vous,

Cordialement.
Modifié par crea1 (20 Feb 2010 - 19:38)