如何使用php在body标签之前动态注入javascript代码?

时间:2013-03-12 04:12:39

标签: php javascript

我使用自己构建的自定义mvc框架。我想问一下如何动态地将javascript文件包含在我的页面底部?

创建帐户页面(createaccount.php)

<?php include('header.php'); ?>

<div class="container maincontainer">
<h3>Create an Account </h3>

<?php include('footer.php'); ?>

我的标签位于footer.php。

我有另一个名为

的页面

登录页面(login.php)

<?php include('header.php'); ?>

<div class="container maincontainer">
<h3>Login </h3>

<?php include('footer.php'); ?>

基本上,这2页使用不同的javascript文件。我想为不同的页面包含不同的js。注意:他们使用相同的footer.php文件

是否有任何函数/方法可以根据特定页面动态地将js代码注入footer.php?专家的建议非常赞赏!

干杯

5 个答案:

答案 0 :(得分:2)

我通常通过在每个脚本页面上创建一个数组来处理这种情况,以便注入页脚:

createaccount.php

<?php
$scripts = array('foo.js', 'bar.js');

include('header.php'); ?>

<!-- page specific content -->

<?php include('footer.php'); ?>

的login.php

<?php
$scripts = array('http://example.com/baz.js');

include('header.php'); ?>

<!-- page specific content -->

<?php include('footer.php'); ?>

footer.php

<!-- whatever your footer content is -->

<?php
// script injection
foreach ($scripts as $url) { ?>
  <script src="<?=$url?>"></script>
<?php } ?>
</body>
</html>

这将允许您根据需要在每个页面上包含尽可能多的脚本。

通常我有一个php文件,它将首先包含在所有页面中以处理数据库连接,会话等,并包括$scripts = array()的初始化;然后默认情况下每个页面都会$scripts初始化为一个空数组,因此只有在需要使用它时才需要在页面上设置它。

答案 1 :(得分:1)

您可以尝试在footer.php中添加以下内容

    <?php 
      $path = $_SERVER['PHP_SELF'];
      $file_info = pathinfo($path);
      $file_name = $file_info['file_name'];

      if($file_name == 'createaccount.php'){
         echo "<script src = 'your_script.js'></script>";
      }else if($file_name == 'login.php'){
         echo "<script src = 'another_script.js'></script>";
      }

    ?>

如果有很多动态脚本,您也可以使用开关

答案 2 :(得分:0)

也许在您的页面中创建一个存储脚本的$script var ...然后在您的页脚中执行if($script) echo $script;

答案 3 :(得分:0)

如果您的脚本仅用于该页面,那么您没有理由不能在包含页脚之前添加<script>标记:

<script type="text/javascript">
// your code here
</script>
<?php include('footer.php'); ?>

在编写脚本时,您需要在脚本中引用的任何元素都已添加到DOM中。

答案 4 :(得分:0)

我认为,对不同的页面使用不同的js文件不是明智的选择。

浏览器在下载后缓存js文件。

但是,您可以对特定页面使用内联j。

保持page_id和js代码的哈希(php中的数组)

footer.php中,在</body>标记之前,内联打印与该page_id链接的js代码。

e.g。

$scripts = array('page1' => 'page1 js code', 'page2' => 'page2 js code');

footer.php之前的</body>

`echo '<script type="text/javascript">';
 echo $scripts['page1'];
 echo '</script>';

在这种情况下,您不需要任何if/else