Php包含和js脚本位置

时间:2013-09-19 12:46:46

标签: javascript php include

我买了一个主题,其中页面都是HTML,底部加载了JS脚本。我修改了主题,现在有了以下PHP文件(相当标准,php包含加载所需内容):

  • 的index.php
  • 的header.php
  • menu.php
  • footer.php

  • content1.php

  • content2.php
  • content3.php
  • ...

所有脚本最后仍在footer.php。

中加载

我的问题在于,在每个内容页面中我都需要特定的脚本,例如content1.php需要script1.js,content2.php需要script2.js ......

这是我无法理解正确的方法:

我可以在页脚中加载所有脚本(script1.js,script2,js和script3.js),因此无论加载哪个内容,都会加载所需的脚本。但我最终加载了未使用的脚本。

例如,我有一个脚本,它从json数组生成并显示一个表(使用php和mysql查询生成)。此表仅显示在content1.php中。

我不想在页脚中加载此脚本,因为每当页面显示时它都会被执行,即使我们不需要它也是如此。而且我不能将它包含在content1.php中,因为它需要在页脚中加载的其他脚本(jQuery),即。在php包含自己之后。

这有意义吗?

7 个答案:

答案 0 :(得分:0)

为什么不在头文件中更频繁地加载你需要的文件,即jquery并在页面底部调用他们需要的可选文件,删除页脚的所有调用

答案 1 :(得分:0)

使用PHP条件(if / else或switch,这可能更好)来检查URL值并在header.php中为页面加载适当的脚本。下面非常粗略的例子。

$url = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];

if (strpos($url,'content1') !== FALSE) {
    echo '<script src="script1.js"></script>';
} 
elseif (strpos($url,'content2') !== FALSE) {
    echo '<script src="script2.js"></script>';
}

答案 2 :(得分:0)

组合文件并在页脚中包含新文件可能会更好。一个文件会导致请求减少,但请密切关注文件大小。

答案 3 :(得分:0)

几年前做了一件小事,如下:

<?php
if(getPageJsname()!='') {
?>
<script type="text/javascript" src="jquery-code-<?php echo getPageJsname(); ?>.js"></script>
<?php
}
?>
function getPageJsname() {
return $scriptname = trim($_SERVER['SCRIPT_NAME'], "/");
}

在此之后,您可以按如下方式重命名所有javascript文件:

对于页面content1.php js name将是jquery-code-content1.js

反之亦然

看看这是否有帮助

答案 4 :(得分:0)

从页脚中取出:

<script></script>

</body>

</html>

并相应地将其放在每个页面中。

答案 5 :(得分:0)

在content1.php中

创建一个var

$script='script1.js';

在content2.php中也是如此

$script='script2.js';

和content3.php

$script='script3.js';

终于在footer.php

echo '<script src="'.$script.'"></script>';

答案 6 :(得分:0)

嗯,最简单明了的解决方案是在内容块启动之前加载jQuery。虽然建议在底部包含脚本并且很好,但它不是基石。还建议组合和压缩您的JS,这样您就可以为所有页​​面生成一个压缩的JS。

但您也可以尝试在呈现文档后通过AJAX加载脚本。有http://api.jquery.com/jQuery.getScript/ {{3}} 而且你知道那一点加载了什么内容。

    $(document).ready(function() {
        if ($("#content1").length > 0) { ... }
    });

您也可以尝试将代码包装在函数中以推迟执行,直到jQuery也被加载。