1

如果您查看此页面的来源http://kingston.talking-newspapers.co.uk/,您会在顶部附近看到大量内联 javascript。

我真的不希望所有这些额外的东西漂浮在我的页面源代码中,我宁愿把它放到一个脚本标签中,然后我可以缩小它和各种各样的东西。

如果我将它称为 php 文件,理论上这应该有效,我只是用 php 结束 js 文件扩展名,并在标题中输入以下内容:

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

但是...很多用于在 javascript 中生成播放列表的 php 变量都设置在主 index.php 文件的开头,并且在像这样调用这个 php 生成的 js 播放列表文件时,它似乎完全评估它分开,所以它充满了错误。

我能想到的唯一方法是让页面写入一个文件,然后立即将其读入。另一件事是,播放列表可能会经常动态变化,所以我认为我需要缩小以不缓存它?

4

2 回答 2

1

我按照本教程提出了解决方案,它将生成内联脚本重定向到一个文件,然后立即读取该文件。

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>

瞧!所有很好的外部,可以缩小,缓存等。

于 2010-06-16T16:53:51.107 回答
0

你可以通过两种方式做到这一点。首先将设置变量内联,然后包含脚本:

<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()方法调用。

于 2010-06-16T01:12:53.493 回答