如果您查看此页面的来源http://kingston.talking-newspapers.co.uk/,您会在顶部附近看到大量的内联JavaScript。
我真的不希望所有这些额外的东西在我的页面源代码中浮动,我更愿意把它放到脚本标签中,然后我可以缩小它并且各种各样。
如果我把它称为php文件,这应该在理论上工作,我只是用php结束js文件扩展名,而在标题中我放了以下内容:
header("Content-type:application/x-javascript");
但是...用于在javascript中生成播放列表的很多php变量都是在主index.php文件的开头设置的,并且在调用这个php生成的js播放列表文件时,它似乎完全单独评估它,所以它充满了错误。
我能想到的唯一方法就是让页面写一个文件,然后立即读取它。另一个是,播放列表可能经常动态地改变,所以我想我需要缩小不缓存它?
答案 0 :(得分: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>
答案 1 :(得分: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()
方法调用。