Php 包含和 js 脚本位置


Php includes and js scripts position

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

  • 索引.php
  • 标题.php
  • 菜单.php
  • 页脚.php

  • 内容1.php

  • 内容2.php
  • 内容3.php

所有脚本仍然在末尾以页脚.php加载。

我的问题是,在每个内容页面中,我需要特定的脚本,例如内容 1.php需要脚本 1.js,内容 2.php需要脚本 2.js......

这是我难以理解正确的方法的地方:

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

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

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

这有意义吗?

使用 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>';
}

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

最好合并文件并将新文件包含在页脚中。一个文件将导致更少的请求,但请注意文件大小。

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

<?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文件,如下所示:

对于页面内容 1.php JS 名称将是 jquery-code-content1.js

反之亦然

看看这是否有帮助

把它从页脚中取出:

<script></script>

</body>
</html>

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

在 content1 中.php创建一个变量

$script='script1.js';

内容相同2.php

$script='script2.js';

和内容3.php

$script='script3.js';

最后在页脚.php

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

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

但您也可以尝试在呈现文档后通过 AJAX 加载脚本。有 http://api.jquery.com/jQuery.getScript/而且您知道此时加载了哪些内容。

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

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