2013-08-13 1 views
0

J'ai écrit une petite page HTML5 dont j'ai besoin pour prendre en charge plusieurs langues. J'ai implémenté le contrôle de la langue en chargeant la page de charger un fichier JSON en mémoire (dans le HEAD) puis en exécutant une commande jQuery pour modifier le texte de n'importe quel élément comme requis.Mise à jour du texte de la page HTML5 avant le rendu

Tout fonctionne bien, sauf que le changement est appelé post rendu (si la fonction document prêt) il y a un léger clignotement que la langue est changée.

Y a-t-il un événement qui est appelé avant le rendu de la page mais après que le DOM est disponible? Sinon, y a-t-il des suggestions pour changer la mise en œuvre?

.. Vive

MISE À JOUR

J'ai trouvé quelques réponses à cette sur d'autres sites. Le consensus général semble être que ce n'est pas possible car la plupart des navigateurs rendent en même temps l'analyse. La solution de contournement proposée consiste à masquer (afficher: 'none') le corps dans le script, puis à l'afficher (affichage: '') après les mises à jour dans la fonction document ready. Cela fonctionne en quelque sorte pour moi même si ce n'est pas parfait à 100%.

+1

Pourriez-vous nous montrer un code? –

+0

Comment n'est-il pas parfait? Avez-vous encore un flash? –

Répondre

1

On dirait que vous rencontrez un problème avec FOUC (FOUC)

Il y a plusieurs façons de contourner le problème. Vous pouvez ajouter à votre corps:

<body class="fouc"> 

Et puis cette CSS:

.fouc{display:none;} 

Et enfin ce script:

$(function(){ 
     $('.fouc').show(); 
}); 

Cela fonctionne en se cachant d'abord la page, puis Une fois que vous êtes prêt, allumez-le avec javascript. Vous devrez peut-être vous assurer que votre manipulation a lieu avant l'appel $('.fouc').show();.

+0

J'ai trouvé quelques réponses à cette question sur d'autres sites. Le consensus général semble être que ce n'est pas possible car la plupart des navigateurs rendent en analysant. – Howesy

Questions connexes