在PHP中设计网站时,您通常会在网站的每个页面中包含一个header.php
文件。 header.php
文件将包含<head>
标记(以及其他内容)。但是,我经常发现我需要将特定于页面的JavaScript放在<head>
标记内。
我过去处理这个问题的方法是在我的标题中添加IF语句,以确定应该输出哪些JavaScript(即如果这是 home 页面,输出所需的JavaScript对于 home 页面,如果这是 about 页面,则输出 about 页面所需的JavaScript等。)
这可能是一种可怕的方式。标准做法是什么?
答案 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>
...
这使我可以避免重复编码,同时为我的页面增加灵活性。