调用在页脚中加载的函数

Call function which was load in footer

本文关键字:加载 函数 调用      更新时间:2023-09-26

在php foreach中,我会使用客户端时区转换日期。

事实上,它不起作用:

<html>
<body>
  <?php foreach ($topic as $post) { ?>
    <span id="date">
      <script type='text/javascript'>
        document.write(window.date('<?php echo $date;?>'));
      </script>
    </span>
  <?php } ?>
<script type='text/javascript'>
  function date(VarDate) {
    var b = VarDate.split(/[: ]/g);
    var m = {jan:0, feb:1, mar:2, apr:3, may:4, jun:5, jul:6, aug:7, sep:8, oct:9, nov:10, dec:11};
    var isoTime = Date.UTC(b[7], m[b[1].toLowerCase()], b[2], b[3], b[4], b[5]);
    var date = new Date(isoTime).toLocaleDateString(navigator.language, {day: '2-digit', month:'2-digit', year:'2-digit'});
    var time = new Date(isoTime).toLocaleTimeString(navigator.language, {hour: '2-digit', minute:'2-digit'});
    return time + ' · ' + date;
    }
</script>

</body>
</html>

当我把函数放在循环之前时,它就可以工作了,但脚本是在页脚中启动的,以优化加载。

我正在寻找更好的东西。抱歉我英语不好。

正如Sanchit所说,您可以重写

    document.write(window.date('<?php echo $date;?>'));

部分,如下所示(如果您使用jQuery)

   $(document).ready(function(){
        // write here where needed: using jQuery the $('') approach is the easiest way
   });

通过这种方式,一旦所有脚本都加载到页面中并定义了所有函数,就会执行脚本。无论如何,在这种情况下,如果在页脚中移动此函数定义,则保存的字节将部分用于在页面准备就绪时激发脚本所需的开销。

根据$topic中$post的数量,这种方法可能会减慢加载时间。也许,将定义放入包含在页面标题中的外部Javascript(这样浏览器就可以缓存它)会更快。