Оценивая сгенерированный php javascript "inline"? - PullRequest
1 голос
/ 16 июня 2010

Если вы посмотрите на источник этой страницы http://kingston.talking -newspapers.co.uk / , вы увидите большое количество встроенного JavaScript в верхней части.

Я не хочу, чтобы все эти дополнительные материалы плавали в исходном коде моей страницы, я бы предпочел поместить их в тег скрипта, а затем я могу минимизировать их и все виды.

Если я называю его php-файлом, это ДОЛЖНО работать в теории, я просто заканчиваю расширение файла js вместо php, и в заголовке я помещаю следующее:

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

но ... многие переменные php, используемые для генерации списка воспроизведения в javascript, настраиваются в начале основного файла index.php, и при вызове этого генерируемого php файла списка воспроизведения js, например, оцените его по отдельности, поэтому он полон ошибок.

Единственный способ, которым я могу обойти это, - это написать на странице файл, а затем сразу же прочитать его. Другое дело, что список воспроизведения может изменяться часто и динамично, поэтому я думаю, что мне нужно минимизировать НЕ кешировать это?

Ответы [ 2 ]

1 голос
/ 16 июня 2010

Я принял решение, следуя этому руководству, которое перенаправляет сгенерированный встроенный скрипт в файл, а затем сразу читает этот файл в.

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

Так что теперь моя страница выглядит:

<?php
require("./filewriter.php");
$obfw = new OB_FileWriter('jplay_gen_playlist.js');
$obfw->start(); 
require($includesdir . "jplayerscript.php");
$obfw->end(); 
?>

<script type="text/javascript" src="jplay_gen_playlist.js"></script>

и вуаля!Все красиво внешне, можно минимизировать, кэшировать и т. Д.

0 голосов
/ 16 июня 2010

Вы можете сделать это двумя способами. Сначала будет установлена ​​переменная inline, а затем будет включен скрипт:

<script type="text/javascript">
  var myPlayList = [
    {
       name: "Introduction and guidance on usage",
       mp3:"http://www.talking-newspapers.co.uk/find/soundfiles/TnHomePageIntro.mp3",
       ogg:"http://www.talking-newspapers.co.uk/find/soundfiles/kingstonkt9.ogg"
    }
    ...
 </script>
 <script type="text/javascript" src="myinclude.js"></script>

Другой вариант - иметь включенный файл .js в виде простой библиотеки функций, которую вы включаете в верхней части страницы, а затем вызываете из некоторого встроенного JavaScript:

<script type="text/javascript" src="myinclude.js"></script>

....

<script type="text/javascript">
$(function() {
    var myPlayList = [ ... ];
    startPlaylist(myPlayList);
});
</script>

Я бы лично выбрал второй метод. Вам не нужно генерировать какой-либо сценарий динамически (насколько я вижу, он может быть жестко запрограммирован, кроме списка воспроизведения, верно?) Любые другие вещи, которые вам нужно передать в сценарий, все же могут быть переданы в в любом случае с помощью вашего startPlaylist() вызова метода.

...