1 votes

Évaluation du javascript généré par php "en ligne"?

Si vous regardez la source de cette page http://kingston.talking-newspapers.co.uk/, vous verrez une grande quantité de javascript en ligne près du haut.

Je ne veux pas vraiment que tout ce supplément flotte autour de la source de ma page, je préférerais le mettre dans une balise script, et ensuite je peux le minifier et tout.

Si je l'appelle en tant que fichier php, cela DEVRAIT fonctionner en théorie, je termine simplement l'extension du fichier js par php, et dans l'en-tête je mets ce qui suit:

header("Content-type:application/x-javascript");

mais... beaucoup des variables php utilisées pour générer la playlist dans le javascript sont définies au début du fichier index.php principal, et en appelant ce fichier de playlist js généré par php de cette manière, il semble l'évaluer complètement séparément, donc il est plein d'erreurs.

La seule solution à laquelle je peux penser est de faire écrire un fichier par la page, puis de le lire immédiatement. L'autre chose est que la playlist est susceptible de changer souvent et dynamiquement, donc je pense que je dois faire en sorte que le minify ne la mette PAS en cache?

1voto

talkingnews Points 89

J'ai fait la solution en suivant ce tutoriel, qui redirige le script inline généré vers un fichier, puis lit immédiatement ce fichier.

http://my.opera.com/zomg/blog/2007/10/03/how-to-easily-redirect-php-output-to-a-file

Maintenant ma page ressemble à ceci :

start(); 
require($includesdir . "jplayerscript.php");
$obfw->end(); 
?>

et voilà! Tout joliment externe, peut être minifié, mis en cache, etc.

0voto

Dean Harding Points 40164

Vous pouvez le faire de deux façons. La première serait de configurer la variable en ligne et d'inclure ensuite le script :

  var myPlayList = [
    {
       name: "Introduction et conseils sur l'utilisation",
       mp3:"http://www.talking-newspapers.co.uk/find/soundfiles/TnHomePageIntro.mp3",
       ogg:"http://www.talking-newspapers.co.uk/find/soundfiles/kingstonkt9.ogg"
    }

L'autre consiste à avoir votre fichier .js inclus une simple bibliothèque de fonctions que vous incluez en haut de la page, puis appelez depuis un javascript en ligne :

....

$(function() {
    var myPlayList = [ ... ];
    startPlaylist(myPlayList);
});

Je choisirais personnellement la deuxième méthode. Vous ne devriez pas avoir besoin de générer dynamiquement une quelconque partie du script (à ce que je vois, tout peut être codé en dur sauf la liste de lecture, non ?) Toutes les autres informations dont vous avez besoin de transmettre au script pourraient toujours être transmises via votre appel à la méthode startPlaylist().

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X