2011-03-19 3 views
2

Actuellement, j'utilise jQuery pour choisir ce que ma page d'index doit charger en fonction de la configuration d'un cookie. Par exemple, l'étiquette body du fichier index.html doit charger hasCookie.html si le cookie est défini et noCookieSet.html si aucun cookie n'est défini.Comment charger la page de manière synchrone en utilisant jQuery

Ma page d'index a actuellement:

load user scripts 
load styling scripts 

<html><body></body></html> 

Le script utilisateur a le code qui vérifie si le cookie. Dans ce cas, j'utilise la charge de jQuery pour charger le contenu dans le corps:

$(document.body).load('hasCookie.html') 

Cependant, comme cela est exécuté de manière asynchrone, les scripts de style ont chargé avant la balise body a été mis à jour, d'où le corps n'est pas Styled .

Existe-t-il un moyen d'avoir une charge synchrone, ou dois-je m'y prendre de la mauvaise façon?

EDIT: si elle aide, les scripts de style sont essentiellement jQueryUI

+3

La meilleure réponse ici est ** ne pas ** - Utilisez plutôt le rappel pour '.load()' pour exécuter vos fonctions de style ... – gnarf

Répondre

2

Dans votre cas, cela semble être une meilleure idée d'implémenter le côté serveur si possible. En PHP, il serait simple de détecter si le cookie que vous voulez est défini dans le tableau $ _COOKIE et de sortir la bonne page.

1

Remplacez simplement document.location.href par l'URL de la page.

Ce que vous faites est de charger du contenu avec ajax et de le placer dans le corps de la page. Vous le feriez si vous ne vouliez pas que des ressources déclarées en tête soient demandées. Mais cela ne sert à rien puisque vous pouvez le faire avec la mise en cache.

0

Essayez

$(document).ready(function() { $(document.body).load('hasCookie.html'); }); 

Cela remettre à plus tard le chargement qu'après tout le reste est déjà là.

8

AFAIK, la charge JQuery ne peut pas être synchrone.

Vous pouvez utiliser cet outil avec la fonction de rappel.

$(document.body).load('hasCookie.html', function(){ 
//call styling script here 
}); 
0

Voici comment je le fais.

Vous pouvez attacher Style et Javascript lors du rappel depuis la fonction Ajax. Cela permet de tout charger, y compris les styles et javascript, étant donné que le nom du script et le nom du fichier css sont les mêmes.

Questions connexes