Je rencontre des problèmes pour que le code de l'interface utilisateur fonctionne correctement dans IE.Problèmes de performances de l'interface utilisateur jQuery avec une table dans IE
J'ai une table - une matrice de valeurs. Chaque cellule peut être vide ou contenir une liste d'éléments.
Je souhaite que les utilisateurs puissent faire glisser des éléments entre les cellules.
Donc, mon HTML ressemble à ceci:
<table>
<tr><td></td><th scope="col">col 1</th><th scope="col">col 2</th></tr>
<tr><th scope="row">row 1</th>
<td class="droppable-cell">
<div class="draggable-item">item A</div>
<div class="draggable-item">item B</div>
</td>
<td class="droppable-cell"></td>
</tr>
<tr><th scope="row">row 2</th>
<td class="droppable-cell"></td>
<td class="droppable-cell">
<div class="draggable-item">item C</div>
<div class="draggable-item">item D</div>
</td>
</tr>
</table>
Ensuite, j'utilise jQuery 1.3.1 et jQuery UI 1.6rc6:
$j('.draggable-item').each(function()
{
$j(this).draggable({
addClasses: false,
revert: true,
zIndex: 2000,
cursor: 'move'
});
});
$j('.droppable-cell').each(function()
{
$j(this).droppable({
addClasses: false,
activeClass: 'droppable-cell-candrop',
hoverClass: 'droppable-cell-hover',
tolerance: 'pointer',
drop: function(event, ui)
{
//function to save change
});
});
});
Notez que ceci est simplifiée, tronquée et inachevée code.
Mon problème est que dans FX, Safari, Chrome, etc (c'est-à-dire tous les navigateurs décents) cela fonctionne très bien.
IE vraiment du mal cependant. Avec une table 5x5, le retard d'IE sur le début d'un glisser est perceptible. Sur une table de 10x10 avec peut-être 100 éléments, le début du glisser est suspendu au navigateur. Je veux être en mesure de prendre en charge jusqu'à 20 x 15 cellules rondes et peut-être jusqu'à 500 articles - est-ce simplement impossible? Cela ne semble pas être le cas.
Est-ce que je fais quelque chose de mal? Y at-il un moyen de faire cela qui ne ralentit pas la page dans IE comme ça?
J'ai aussi ce problème exact. grande table, divs imbriqués dans la table. firefox rend la page dans les 10 secondes, c'est-à-dire restitue la table après une attente de 2 minutes. Firefox encore zips avec le drag et dtop, c.-à-d. rampe .. infact il gèle, et le glisser-déposer ne fonctionne pas. vais essayer quelques-unes des solutions ci-dessous. la largeur fixe et les références #id tagname.class.Mais je crains que cela ne soit encore lent. si quelqu'un d'autre a de bonnes choses, je serais tout ouïe. – Bingy
Ouais - ma solution était de limiter les utilisateurs d'IE - ils ne peuvent sélectionner qu'un petit sous-ensemble des lignes et des colonnes que les utilisateurs FX et Chrome peuvent. Même alors, IE8 ne fait que faire face à peut-être 25 cellules (grille 5x5), 7 et 6 restent sans espoir. Il ramène des souvenirs du développement Web de la fin des années 90 et est une chose laide à faire, mais que pouvez-vous faire d'autre si votre navigateur est si pauvre? – Keith
Ayant le même problème, IE est super lent avec une grande grille, mais Chrome et Firefox vont bien. –