Accueil > Forum > > > > [IE] Trop de JS tue le JS ?
[IE] Trop de JS tue le JS ?
lundi 30 novembre 2009 à 09:18:48 |
[IE] Trop de JS tue le JS ?

xactise
|
Bonjour à tous,
J'ai un petit souci avec Internet Explorer (V8, donc pas tester les précédentes, je me doute que le résultat sera le même.)
J'ai une page qui est assez gourmande en JS du fait que je génère des tableau (ma fois complet) en DOM.
Mes fonctions me semble pourtant bien fait niquel.
Le soucis est que tous passe niquel sous FireFox, mais sous IE sa passe dison 1 fois sur 10. Ma page ne se charge pas complêtement, le plus étrange c'est que le chargement de la page s'arrête à différents endroit. et parfois ben sa passe au complet...
Très étrange, je tiens a signaler que le script s'arrête tous le temps après les appels a mes différentes fonction, et que ces dernière fonctionne très bien, c'est juste que sa ne se charge pas jusqu'au bout parfois un peu plus, parfois au complet...
Quelqu'un a une idée ?
D'avance merci
L0rD...
|
|
lundi 30 novembre 2009 à 09:39:46 |
Re : [IE] Trop de JS tue le JS ?

Bul3
|
Bonjour,
bah.... sans le moindre ch'tiot bout de code,
difficile d'avancer une quelconque hypothèse
temps trop long... mais là, IE le dit.
pas de raisons, à priori, sauf erreurs dues
aux différences IE,Fx ?
debogage ?
Cordialement [ mon Site] [ M'écrire] Bul 
|
|
lundi 30 novembre 2009 à 10:09:15 |
Re : [IE] Trop de JS tue le JS ?

xactise
|
Yop merci pour ta réponse et ta rapidité,
Disons que j'ai pas mal de petite fonction pour généré du DOM
Du style :
Code Javascript :
function DOMaddTR(id){
var tr = document.createElement("tr");
tr.setAttribute("id", id);
return tr;
}
function DOMaddTD(id, classs, width, align, colspan, rowspan){
var td = document.createElement("td");
td.setAttribute("id", id);
td.setAttribute("class", classs);
td.setAttribute("width", width);
td.setAttribute("align", align);
td.setAttribute("colspan", colspan);
td.setAttribute("rowspan", rowspan);
return td;
}
function DOMaddINPUT(name, id, classs, readonly){
var input = document.createElement("input");
input.setAttribute("name", name);
input.setAttribute("id", id);
input.setAttribute("class", classs);
if(readonly==true) input.setAttribute("readonly","readonly");
return input;
}
function getElementsByName2 (obj, name) {
var elements = document.getElementsByName(name);
var resultat = new Array();
for (i=0; i<elements.length; i++) {
if (isChildOf(elements[i], obj)) {
resultat.push(elements[i]);
}
}
return resultat;
}
function isChildOf (obj, parent) {
var child = obj;
while (typeof (child = child.parentNode) != "undefined" && child != null) {
if (child == parent) {
return true;
}
}
return false;
}
function check_formations()
{
var count = getNAME("f_type_formation[]").length;
for(var i=0;i<count;i++)
{
if(getNAME("f_vendeur[]")[i].value=="choisir")
{
alert("Veuillez sélectionner le vendeur de la formation");
return false;
}
}
return true;
}
etc....
et Une assez grande fonction
Code Javascript :
function DOMaddRow(type_formation,i, id_formation, vendeur, prix_formation, participant, cheque_virement_recu, paiement, date_facturation, date_paiement, date_formation, formateur, convention_signe, attestation_presence, formation_annule, modifier){
var id_formation = id_formation === undefined ? '' : id_formation;
var vendeur = vendeur === undefined ? '' : vendeur;
var prix_formation = prix_formation === undefined ? '' : prix_formation;
var participant = participant === undefined ? '' : participant;
var cheque_virement_recu = cheque_virement_recu === undefined ? '' : cheque_virement_recu;
var paiement = paiement === undefined ? '' : paiement;
var date_facturation = date_facturation === undefined ? '' : date_facturation;
var date_paiement = date_paiement === undefined ? '' : date_paiement;
var date_formation = date_formation === undefined ? '' : date_formation;
var formateur = formateur === undefined ? '' : formateur;
var convention_signe = convention_signe === undefined ? '' : convention_signe;
var attestation_presence = attestation_presence === undefined ? '' : attestation_presence;
var formation_annule = formation_annule === undefined ? '' : formation_annule;
var modifier = modifier === undefined ? false : modifier;
div = getID('listing_formation_'+type_formation);
var tableau = document.createElement("table");
tableau.setAttribute("id", type_formation+"_"+i);
tableau.setAttribute("class", "table");
tableau.setAttribute("cellpadding", "5");
tableau.setAttribute("cellspacing", "0");
var table = document.createElement("tbody");
var tr = DOMaddTR('');
var td = DOMaddTD('','fond_menu gras centrer','','center','2','');
var input = DOMaddINPUT("f_type_formation[]", "f_type_formation"+type_formation+"_"+i, "invisible_", false);
input.setAttribute("value", type_formation);
td.appendChild(input);
var input = DOMaddINPUT("f_id_formation[]", "f_id_formation"+type_formation+"_"+i, "invisible_", false);
input.setAttribute("value", id_formation);
td.appendChild(input);
td.innerHTML += 'Formation '+type_formation+' '+i;
tr.appendChild(td);
table.appendChild(tr);
tr = DOMaddTR('');
td = DOMaddTD('','gras','','','1','');
td.innerHTML = 'Vendeur : ';
td2 = DOMaddTD('','','','','1','');
td2.innerHTML = "<?=liste_all("f_vendeur[]","",false);?>";
tr.appendChild(td);
tr.appendChild(td2);
table.appendChild(tr);
tr = DOMaddTR('');
td = DOMaddTD('','gras','','','1','');
td.innerHTML = 'Prix : ';
td2 = DOMaddTD('','','','','1','');
input = DOMaddINPUT("f_prix[]","f_prix_"+type_formation+"_"+i,"input50",false);
if(modifier==true)
input.setAttribute('value',prix_formation);
td2.appendChild(input);
td2.innerHTML += " &euro";
tr.appendChild(td);
tr.appendChild(td2);
table.appendChild(tr);
tr = DOMaddTR('');
td = DOMaddTD('','gras','','','1','');
td.innerHTML = 'Participant : ';
td2 = DOMaddTD('','','','','1','');
input = DOMaddINPUT("f_participant[]","f_participant"+type_formation+"_"+i,"input50",false);
if(modifier==true)
input.setAttribute('value',participant);
td2.appendChild(input);
tr.appendChild(td);
tr.appendChild(td2);
table.appendChild(tr);
tr = DOMaddTR('');
td = DOMaddTD('','gras','','','1','');
td.innerHTML = 'Chèque / Virement reçu : ';
td2 = DOMaddTD('','','','','1','');
td2.innerHTML = '<select name="f_cheque_virement_recu[]" id="cheque_virement_recu_'+type_formation+'_'+i+'"><option value="" '+(cheque_virement_recu=='' ? 'selected="selected"' : '')+'>----</option><option value="Non" '+(cheque_virement_recu=='Non' ? 'selected="selected"' : '')+'>Non</option><option value="Oui" '+(cheque_virement_recu=='Oui' ? 'selected="selected"' : '')+'>Oui</option></select>';
tr.appendChild(td);
tr.appendChild(td2);
table.appendChild(tr);
tr = DOMaddTR('');
td = DOMaddTD('','gras','','','1','');
td.innerHTML = 'Paiement : ';
td2 = DOMaddTD('','','','','1','');
td2.innerHTML = '<select name="f_paiement[]" id="f_paiement_'+type_formation+'_'+i+'"><option value="" '+(paiement=='' ? 'selected="selected"' : '')+'>------</option><option value="Non" '+(paiement=='Non' ? 'selected="selected"' : '')+'>Non</option><option value="Oui" '+(paiement=='Oui' ? 'selected="selected"' : '')+'>Oui</option><option value="Offert" '+(paiement=='Offert' ? 'selected="selected"' : '')+'>Offert</option></select>';
tr.appendChild(td);
tr.appendChild(td2);
table.appendChild(tr);
tr = DOMaddTR('');
td = DOMaddTD('','gras','','','1','');
td.innerHTML = 'Date facturation : ';
td2 = DOMaddTD('','','','','1','');
input = DOMaddINPUT("f_date_facturation[]", "date_facturation_"+type_formation+"_"+i, "", false);
if(modifier==true)
input.setAttribute('value',date_facturation);
td2.appendChild(input);
td2.innerHTML += "<a href=\"javascript:maz('date_facturation_"+type_formation+"_"+i+"')\">remettre à zéro</a>";
tr.appendChild(td);
tr.appendChild(td2);
table.appendChild(tr);
tr = DOMaddTR('');
td = DOMaddTD('','gras','','','1','');
td.innerHTML = 'Date paiement : ';
td2 = DOMaddTD('','','','','1','');
input = DOMaddINPUT("f_date_paiement[]", "date_paiement_"+type_formation+"_"+i, "", false);
if(modifier==true)
input.setAttribute('value',date_paiement);
td2.appendChild(input);
td2.innerHTML += "<a href=\"javascript:maz('date_paiement_"+type_formation+"_"+i+"')\">remettre à zéro</a>";
tr.appendChild(td);
tr.appendChild(td2);
table.appendChild(tr);
tr = DOMaddTR('');
td = DOMaddTD('','gras','','','1','');
td.innerHTML = 'Date formation : ';
td2 = DOMaddTD('','','','','1','');
input = DOMaddINPUT("f_date_formation[]", "date_formation_"+type_formation+"_"+i, "", false);
if(modifier==true)
input.setAttribute('value',date_formation);
td2.appendChild(input);
td2.innerHTML += "<a href=\"javascript:maz('date_formation_"+type_formation+"_"+i+"')\">remettre à zéro</a>";
tr.appendChild(td);
tr.appendChild(td2);
table.appendChild(tr);
tr = DOMaddTR('');
td = DOMaddTD('','gras','','','1','');
td.innerHTML = 'Formateur : ';
td2 = DOMaddTD('','','','','1','');
td2.innerHTML = "<?=liste_all("f_formateur[]","",false);?>";
tr.appendChild(td);
tr.appendChild(td2);
table.appendChild(tr);
tr = DOMaddTR('');
td = DOMaddTD('','gras','','','1','');
td.innerHTML = 'Convention signé: : ';
td2 = DOMaddTD('','','','','1','');
td2.innerHTML = '<select name="f_convention_signe[]" id="convention_signe_'+type_formation+'_'+i+'"><option value="" '+(convention_signe=='' ? 'selected="selected"' : '')+'>----</option><option value="Non" '+(convention_signe=='Non' ? 'selected="selected"' : '')+'>Non</option><option value="Oui" '+(convention_signe=='Oui' ? 'selected="selected"' : '')+'>Oui</option></select>';
tr.appendChild(td);
tr.appendChild(td2);
table.appendChild(tr);
tr = DOMaddTR('');
td = DOMaddTD('','gras','','','1','');
td.innerHTML = 'Attestation de présence : ';
td2 = DOMaddTD('','','','','1','');
td2.innerHTML = '<select name="f_attestation_presence[]" id="attestation_presence_'+type_formation+'_'+i+'"><option value="" '+(attestation_presence=='' ? 'selected="selected"' : '')+'>----</option><option value="Non" '+(attestation_presence=='Non' ? 'selected="selected"' : '')+'>Non</option><option value="Oui" '+(attestation_presence=='Oui' ? 'selected="selected"' : '')+'>Oui</option></select>';
tr.appendChild(td);
tr.appendChild(td2);
table.appendChild(tr);
tr = DOMaddTR('');
td = DOMaddTD('','gras','','','1','');
td.innerHTML = 'Annulée : ';
td2 = DOMaddTD('','','','','1','');
td2.innerHTML = '<select name="f_formation_annule[]" id="formation_annule_'+type_formation+'_'+i+'"><option value="" '+(formation_annule=='' ? 'selected="selected"' : '')+'>----</option><option value="Non" '+(formation_annule=='Non' ? 'selected="selected"' : '')+'>Non</option><option value="Oui" '+(formation_annule=='Oui' ? 'selected="selected"' : '')+'>Oui</option></select>';
tr.appendChild(td);
tr.appendChild(td2);
table.appendChild(tr);
tableau.appendChild(table);
div.appendChild(tableau);
getID('count_'+type_formation).innerHTML = i;
if(modifier==true)
if(prix_formation!='') getID('count_modif_'+type_formation).innerHTML = i;
var nb_select = getElementsByName2(getID("listing_formation_"+type_formation),"f_vendeur[]")[parseInt(i)-1].length;
for(var j=0;j<nb_select;j++)
{
if(getElementsByName2(getID("listing_formation_"+type_formation),"f_vendeur[]")[parseInt(i)-1].options[j].value==vendeur)
getElementsByName2(getID("listing_formation_"+type_formation),"f_vendeur[]")[parseInt(i)-1].options[j].selected = true;
}
var nb_select = getElementsByName2(getID("listing_formation_"+type_formation),"f_formateur[]")[parseInt(i)-1].length;
for(var j=0;j<nb_select;j++)
{
if(getElementsByName2(getID("listing_formation_"+type_formation),"f_formateur[]")[parseInt(i)-1].options[j].value==formateur)
getElementsByName2(getID("listing_formation_"+type_formation),"f_formateur[]")[parseInt(i)-1].options[j].selected = true;
}
}
Voila c'est assez long et lourd, je pense pas qu'il y est d'erreur comme je t'es dit car des moments la page ce charge en entier, et mes scripts fonctionnent bien...
D'avance merci
L0rD...
|
|
lundi 30 novembre 2009 à 10:30:10 |
Re : [IE] Trop de JS tue le JS ?

Bul3
|
° déjà, je n'utilise "jamais" setAttribute
il y a des différences entre navigateurs
par exemple à
Code Javascript : var tableau = document.createElement("table");
tableau.setAttribute("id", type_formation+"_"+i);
tableau.setAttribute("class", "table");
tableau.setAttribute("cellpadding", "5");
tableau.setAttribute("cellspacing", "0");
je préfère ( tout simplement )
Code Javascript : var tableau = document.createElement("table");
tableau.id=type_formation+"_"+i;
tableau.className="table";
tableau.cellpadding="5";
tableau.cellspacing= "0";
° ensuite, innerHTML+= peut ralentir énormément
createElement + appendChild valent mieux (?)
comme vous utilisez déjà...
° pas sur que les fonctions getElementsByName2+ isChildOf
soient réellement nécessaires. si c'est uniquement
pour retrouver les éléments contenus dans un autre.
° pas tout regardé à fond
ça n'explique peut-être rien du tout ? mais
je tenterais déjà ça... 
|
|
lundi 30 novembre 2009 à 15:30:23 |
Re : [IE] Trop de JS tue le JS ?

Bul3
|
c'est vrai que j'ai oublié un piste, un exemple...
pour voir les "éléments contenus dans un autre"
si j'ai compris ce à quoi ça servait !
regardez élément.getElementsByTagName("*")
( et test du className si nécessaire )
si cela ne correspond pas, c'est parce que
je n'ai pas pigé, le but, mais ce doit être
aussi simple que ça, voire plus 
|
|
Cette discussion est classée dans : page, ie, passe, js, complet
Répondre à ce message
Sujets en rapport avec ce message
Script qui fonctionne avec Mozilla et Google chrome mais pas avec IE !!! [ par Ronflette ]
Bonjour a tous et merci a tous ceux qui répondront à ce poste.Voilà deux jours que je m'arrache les cheveux pour protéger l'accés d'un site web par un
créer une page nommée "ftp" avec plusieurs logins et mots de passe [ par nthl ]
bonjourJ'ai besoin de creer quelques pages pour un site, je n'y connais rien donc tatonne et tente de faire ce que je peux. j'ai acheté un espace sur
Remplir un champ password sur une URL définie [ par PAPcorp2 ]
Bonjour,J'ai besoin d'aide. Il me faut un script pour envoyer un mot de passe vers un champ qui est sur une page web dont je ne peux modifier la sou
Souci avec HTTPRequest sous IE en SSL [ par karistote ]
Hello tlm !J'ai un petit souci sur une page, qui se révèle bien embêtant, et apres des jours de recherche, je n'ai toujours rien...J'ai un champ avec
Affichage incorrect IE [ par hocine2512 ]
Bonjour,j'ai un soucis avec l'affichage d'une page elle s'affiche tres bien sous FF, SAFARI mais avec IE sa ressemble a rien quelqu'un peu maider ?la
Lancer un PPS depuis une page HTML en dehors de IE [ par sgarro ]
tout est dans le titre ...Clairement, j'ai une page HTML dans lequelle on retrouve une zone réactive qui, lorsque l'on clique dessus, doit lancer un P
importation du fichier js et css par javascript [ par islamsaadally ]
slt tous le monde , je travaille avec des pages jsp sur netbeans et et j'ai du code javascript pour une calendrier qui fait appel a une page d'exten
Solution pour cacher un mot de passe d'accès d'une page [ par bojolais ]
Bonjour,Je ne parviens pas à trouver un code qui me permettrait de cacher le mot de passe d'acces à une page.Pour accéder à une page j'ai créé un mot
Probleme de compatibilté avec ie [ par scinzia ]
Bonjour en m'inspirant du script suivant : script , permettant d'activer ou de désactiver une liste multiple , j'ai créé une page html a
protéger une page par identification login et mot de passe [ par claireweb ]
bonjour, je suis nouvelle. Bravo pour ce site qui propose des zip à télécharger, comme ça j'ai le code complet et pour une débutante c'est pratique.
Livres en rapport
|
Derniers Blogs
JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|