0

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

  • 索引.php
  • 头文件.php
  • 菜单.php
  • 页脚.php

  • content1.php

  • content2.php
  • 内容3.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包含自身之后。

那有意义吗 ?

4

7 回答 7

0

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

于 2013-09-19T12:52:59.770 回答
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>';
}
于 2013-09-19T12:58:08.520 回答
0

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

于 2013-09-19T12:58:33.243 回答
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 名称将是 jquery-code-content1.js

反之亦然

看看这是否有帮助

于 2013-09-19T13:00:12.200 回答
0

把它从页脚中取出:

<script></script>

</body>

</html>

并相应地放在每一页中。

于 2013-09-19T13:00:35.500 回答
0

在 content1.php 创建一个 var

$script='script1.js';

在 content2.php 中相同

$script='script2.js';

和 content3.php

$script='script3.js';

最后在footer.php

echo '<script src="'.$script.'"></script>';
于 2013-09-19T13:01:40.597 回答
0

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

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

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

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

于 2013-09-19T13:04:32.287 回答