2010-08-02 5 views
3

Considérez le document suivantdélai d'attente de charge pour Javascript

<html> 
    <body> 
     This is some content 
     <script type="text/javascript" src="verySlowToRespond.js"></script> 
     This is some more content 
    </body> 
</html> 

Je voudrais d'abord vérifier mon hypothèse selon laquelle il est dangereux pour le navigateur pour analyser au-delà de l'étiquette script jusqu'à ce que le script a chargé et exécuté.

Cela signifie que (si mon hypothèse est correcte), disons que verySlowToRespond.js prend 20 secondes pour répondre, la page DOM ne peut pas être entièrement assemblée tant que cette dépendance n'est pas résolue.

Supposant verySlowToRespond.js accroché à propos indéfiniment? À quel moment le navigateur abandonnerait-il et continuerait-il l'analyse?

+2

Je n'ai pas de nombres durs, mais le délai d'attente de Firefox est quelque chose entre 20-30 secondes de mon expérience. Ceci est une valeur définie individuellement dans chaque navigateur. –

+2

C'est l'une des raisons pour lesquelles j'évite de mettre JS dans le et que je préfère exécuter des scripts en charge. – Robusto

Répondre

3

Correct: le navigateur ne se poursuivra pas au-delà de la balise de script jusqu'à ce qu'il soit lu et évalué il.

Le navigateur abandonne sur la base des mêmes règles de délai qu'il utilise pour les pages. Cela dépend du navigateur et de la nature exacte du délai d'expiration.

Je me demande pourquoi il y aurait une telle chose comme un script lent à répondre. Y a-t-il un problème avec votre hébergement? Est-ce que le script est lent à répondre, ou est-ce qu'il charge et puis prend beaucoup de temps à courir?

+0

C'est une question hypothétique que je dois poser parce que nous livrons un widget basé sur Javascript à des pages tierces, et dans le cas où nos serveurs ne sont pas en pleine forme, ils pourraient rencontrer des problèmes causés par nous. Nous ne voulons pas que l'on ralentisse un site CDN en attente de livraison. J'ai déjà mis en place un mécanisme de livraison bien meilleur, mais j'essaie d'écrire une documentation pour résoudre les problèmes que j'ai rencontrés avec la méthode de livraison précédente. – spender

+0

Eh bien une façon de contourner le problème est d'avoir votre contenu inclus dans un «