Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 26-10-2011 10:23:43

siriu
Membre
Date d'inscription: 17-05-2011
Messages: 55

Inserer javascript en bas de page

Bonjour,

Je vais mettre dans mon layout en dessous de mon content et avant la fin de la balise body l'insertion de jQuery mais je voudrai pouvoir lorsque j'en ai besoin depuis mes vues insérer en dessous du jQuery un script js.

Dois je créer une variable dans l'action en question et tester la présence de cette variable dans mon fichier de layout et l'afficher si elle existe, ou y'a t'il des variables existantes prévues pour ça ?

J'ai trouvé le moyen pour insérer les scripts facilement dans le header mais pas avant la fin de la balise body sad

Dernière modification par siriu (26-10-2011 10:24:42)

Hors ligne

 

#2 27-10-2011 16:46:38

Ithier
Membre
Date d'inscription: 05-01-2010
Messages: 85

Re: Inserer javascript en bas de page

Pour la gestion des js, ZF utilise le helper de vue headScript: n'importe ou dans ton application tu ajoute au headScript le script que tu veux inclure:

Code:

[lang=php]
$this->headScript()->appendFile('mon_script.js');

Il y a plein de méthodes pour ajouter des js à headScript, regarde la doc http://framework.zend.com/manual/en/zen … headscript

Ensuite dans ton layout à l'endroit que tu veux et donc juste avant la fermeture de ton body par exemple, tu ajoutes le code

Code:

[lang=php]
<?php echo $this->headScript(); ?>

Dernière modification par Ithier (27-10-2011 16:47:21)

Hors ligne

 

#3 28-10-2011 10:49:31

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: Inserer javascript en bas de page

Je ne vois jamais l'intérêt de mettre des bout de JS partout

Un script dons l'entête faisant exactement la même chose.

le seul truc que permet un script dans le code HTML est un truc qui devrait être interdit tant c'est pourave en terme de perf
"document.write"

tout développer JS un peut  averti (il suffit de lire la doc) sait que
document.write implique une réinterprétation du code HTML (et donc javascript) par le moteur de rendu.
sans compter qu'en plus il existe une solution très simple de sen passer.
mettre un id sur le tag HTML ou on veut insérer quelque chose et fait un javascript qui s'exécute au onLoad soit donc quand la page est chargé.

Code:

mon code Html
<div><script>document.write("du code généré à insérer");</script></div>

se remplace très facilement par

Code:

<html><head>
<script>function insertMyCode () {
  document.getElementById("monId").innerhtml("du code généré à insérer");
}
</script>
</head>
<body onload="insertMyCode()">....
mon code Html
<div id="monId></div>

ces deux script ont le même effet le premier recharge deux fois le html pour obtenir le résultat le second une seule fois.

et vu que tu cause de jQuery c'est en core plus simple à écrire.

Je n'ai jamais trouvé un seul cas ou l'ajout de code dispersé dans le source html était impossible à reproduire dans l'entête.

de plus je n'ai jamais trouvé un seul cas ou un script statique (src=urlstatique) ne pouvais remplacer un script généré dynamiquement.

et lorsqu'on sait que le navigateur garde en cache les script statique compilé alors qu'il lui faut rechargé par le réseau et re compiler les scripts dynamique il n'y a pas photo.

A+JYT
PS: pour info ma dernière appli Zend 26000 lignes de js et 30000 lignes de php
Zero pb de perf

Hors ligne

 

#4 28-10-2011 14:55:50

siriu
Membre
Date d'inscription: 17-05-2011
Messages: 55

Re: Inserer javascript en bas de page

Merci pour vos réponses à tous les deux.

@sekaijin excuses moi je suis "junior" mais pourquoi parles tu de document.write ?

Je veux juste insérer un script de vérification de formulaire et je me sert effectivement dans ce script jQuery des id du formulaire mais d'après ce que j'ai lu, on peut mettre le script dans le head mais le mieux c'est avantla fin de la balise <body> pour le confort de l'internaute...

Je suis d'accord, je pense que ça ne change pas grand chose, mais vu que j'ai la possibilité je pense que j'ai avantage à le faire, au pire "ça ne mange pas de pain" smile

Hors ligne

 

#5 28-10-2011 15:55:09

f.garoby
Membre
Date d'inscription: 02-03-2011
Messages: 105

Re: Inserer javascript en bas de page

siriu a écrit:

mais d'après ce que j'ai lu, on peut mettre le script dans le head mais le mieux c'est avantla fin de la balise <body> pour le confort de l'internaute...

Gnééé O_o

Si tu veux parler du fait que ton script risque de démarrer avant que la page n'ait fini de se charger, sache que jQuery permet d'exécuter du javascript une fois le document chargé, comme ceci :

Code:

$( document ).ready( function()
{
// Ton code ici
} );

Hors ligne

 

#6 28-10-2011 18:45:31

Ithier
Membre
Date d'inscription: 05-01-2010
Messages: 85

Re: Inserer javascript en bas de page

Le chargement des js à la fin du body n'est pas pour que le code s'exécute à la fin du chargement mais pour des questions de performances cf http://developer.yahoo.com/performance/ … #js_bottom .

Quand à ce que je disais à propos d'utiliser le headScript partout dans l'application, ce n'est pas forcément pour du code mais aussi pour des fichiers de scripts. Tu peux ainsi dans ta vue utiliser la fonction appendFile pour charger juste les scripts qui sont nécessaires pour cette page, et ensuite positionner leur chargement dans la page exactement où tu veux dans le layout.

Hors ligne

 

#7 29-10-2011 14:00:17

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: Inserer javascript en bas de page

siriu a écrit:

Merci pour vos réponses à tous les deux.

@sekaijin excuses moi je suis "junior" mais pourquoi parles tu de document.write ?

Je veux juste insérer un script de vérification de formulaire et je me sert effectivement dans ce script jQuery des id du formulaire mais d'après ce que j'ai lu, on peut mettre le script dans le head mais le mieux c'est avantla fin de la balise <body> pour le confort de l'internaute...

Je suis d'accord, je pense que ça ne change pas grand chose, mais vu que j'ai la possibilité je pense que j'ai avantage à le faire, au pire "ça ne mange pas de pain" smile

Bonjour
Je dis simplement qu'insérer un js dans le HTML ne sert absolument à rien
une référence dans le Header est largement suffisant.
la seule méthode qui implique de devoir mettre du js dans le code html c'est document.write.

Et j'ajoute qu'il existe toujours une autre façon de faire que d'utiliser document.write.

pour la vérification d'un formulaire il n'est absolument pas nécessaire de mettre du code js dans le HTML un script dans l'entête est largement plus efficace.

A+JYT

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages