在PHP头文件中处理特定于页面的JavaScript

时间:2012-07-05 19:22:18

标签: php javascript

在PHP中设计网站时,您通常会在网站的每个页面中包含一个header.php文件。 header.php文件将包含<head>标记(以及其他内容)。但是,我经常发现我需要将特定于页面的JavaScript放在<head>标记内。

我过去处理这个问题的方法是在我的标题中添加IF语句,以确定应该输出哪些JavaScript(即如果这是 home 页面,输出所需的JavaScript对于 home 页面,如果这是 about 页面,则输出 about 页面所需的JavaScript等。)

这可能是一种可怕的方式。标准做法是什么?

5 个答案:

答案 0 :(得分:3)

首先,<script>标记不需要位于标题中。将它们放在HTML文档中的任何位置都是完全有效的。

但是如果你决定将它们包含在标题中,一个简单的解决方案就是声明一个变量,标题应该回显包含你的脚本标记。例如:

<?php
$scripts = "<script src='script.js' type='text/javascript'></script>";
include("header.php");
?>

然后你的header.php脚本如下:

<html>
<head>
<!-- header stuff goes here -->
<?php /*echo out scripts */ echo $scripts; ?>
</head>
<body>
<!-- part of body goes here -->

答案 1 :(得分:3)

假设您实际上在每个文件中都包含header.php,只需在包含header.php之前定义一个数组,然后添加额外的脚本。然后在header.php中,检查该数组并在必要时写出额外的脚本标记:

mypage.php:

$extra_scripts = array('jquery.js','jquery-ui.js');
include('header.php');
// Rest of your code.

的header.php:

if (is_array($extra_scripts)) {
   foreach( $extra_scripts as $script ) {
         // Render a script tag
   }
}

答案 2 :(得分:2)

如果使用像Twig这样的模板引擎,则可以继承 base 模板,而不是包含页眉和页脚,并修改该基础中定义的“块”。 BR />

出于示例目的,您的基本模板可能包含内容块和header_javascript块,如此

{% block header_javascript %}
<script src='/js/jquery.js' type='text/javascript'></script>
{% endblock %}

然后,在您的子模板中,您可以覆盖此块,调用{{ parent() }},然后添加其他特定于页面的脚本。

答案 3 :(得分:2)

我可以看到你的问题得到了很清楚的回答。但我想补充一点。

从技术上讲,将script标记放在文档的任何位置是有效的,但最好将脚本放在文档的末尾,除非必要。它会让访问者仍然看到你的html和javascript尚未下载,顺便说一句,在DOM准备就绪之前你通常不需要运行脚本。

答案 4 :(得分:1)

我就是这样做的:

<!DOCTYPE html>
<html lang="en"> 
<head>
    <title>Page Title</title>
    <meta name="description" content="Page Description" />

    <!-- Includes header stuff, css, js, google analytics, etc.. -->
    <? include('header.php'); ?>

</head>
<body>
 ...

这使我可以避免重复编码,同时为我的页面增加灵活性。