2010-03-25 10 views
0

J'utilise JavaScript pour le rendu 20 tables de 100 lignes chacune. Les données de chaque table sont fournies par le contrôleur en tant que JSON. Chaque table est divisée en sections qui ont des «totaux» et ont un autre code logique JavaScript. Certains totaux sont en dehors de la table elle-même.Le navigateur est bloqué, les travailleurs à la rescousse?

En conséquence des blocs JavaScript navigateur pour quelques secondes (en particulier dans IE6) :(

je consideting à utiliser http://code.google.com/p/jsworker/, mais Google Gears travailleurs (je suppose que les travailleurs en général) ne me permet pas de apporter des modifications à DOM au code du travailleur, et aussi il me semble que je ne peux pas utiliser jQuery dans le code du travailleur jsworker (peut-être je me trompe ici?)

Ce problème semble être fondamental pour la pratique du codage JavaScript. , pouvez-vous partager avec moi vos pensées comment l'aborder?

Répondre

1

Les travailleurs peuvent uniquement communiquer avec l'exécution de la page en passant des messages. Ils sont incapables d'interagir directement avec la page, car cela entraînerait d'énormes difficultés.

Vous aurez besoin d'optimiser votre code de manipulation DOM pour accélérer le temps de traitement. Il vaut la peine de consulter google pour les bonnes pratiques.

Une façon d'accélérer l'exécution est de construire la table à l'extérieur du DOM et l'insérer dans le document que lorsqu'il est terminé. Cela empêche le navigateur de devoir retravailler à chaque insertion, ce qui représente la plus grande partie du temps.

0

Vous n'êtes pas censé changer l'interface utilisateur d'un arrière-plan en général. Vous devez toujours signaler le thread principal que le worker a terminé et renvoyer un résultat au thread principal qui peut ensuite le traiter.

HTML5 comprend une propriété async pour les balises et l'écriture à votre interface utilisateur à partir de là provoque une page blanche avec juste les trucs que vous vouliez écrire.

Vous avez donc besoin une autre approche là. Je ne suis pas un gourou JS, donc je ne peux pas vous aider avec une implémentation, mais au moins vous avez maintenant le concept :)

0

Si vous voulez plonger dans le monde des performances du navigateur, le High Performance Web Sites blog a beaucoup d'informations utiles - y compris lorsque les javascripts bloquent le rendu des pages, et les meilleures pratiques pour éviter ces problèmes.