【问题标题】:Trying to make a webpage refresh counter尝试制作网页刷新计数器
【发布时间】:2017-07-02 16:46:24
【问题描述】:

我想计算我的网页被“刷新”的次数。然后在页面上显示一条消息以及刷新次数。

例如,在第一次刷新时,会显示以下语句 - “1 次刷新,继续”等等。句子将随着刷新次数而不断变化。我至少需要打印 10 个句子。

一开始,我以为我只是把句子放在一个数组中,然后用cookies统计刷新次数,然后根据刷新次数显示对应的句子。
但是,cookie 是一个问题,因为它们存储的是字符串而不是整数。我尝试使用 Number()parseInt() 函数,但它们似乎不起作用,并且由于某种原因使用 JavaScript 会弄乱我的整个网页。

然后我想到在 PHP 中使用会话。他们在第一次方法和我的事情上看起来也不错(因为我不喜欢在客户端做任何事情)。但它们也不起作用,我的网页上有一半的打印声明。没有计数器,什么都没有。

我已阅读前面的问题。
我已经尝试过 cookie。
我已经尝试过会话。

我的计数器 PHP 文件 -

<?PHP
session_start();

if(isset($_SESSION['views'])) {
    $_SESSION['views'] = $_SESSION['views']+ 1;
} else {
    $_SESSION['views'] = 1;
}
echo "Total page views = ". $_SESSION['views'];
?>

我的index.html 文件最后包含此脚本以运行上述脚本,该脚本存储在名为counter.php 的不同文件中。

<?php
echo "<hr><div align=\"center\">";
    include_once "counter.php"; // this will include the counter.
echo "</div>";
?>

但是,当我加载页面时,我只会在底部看到"; include_once "counter.php"; // this will include the counter. echo ""; ?&gt;

欢迎任何解决方案。 Cookie 或会话或其他任何东西。我需要启动并运行这件事。

P.S- 非常抱歉,我无法提供指向我网页的链接,因为我必须在 2017 年 2 月 15 日之前对其保密。

【问题讨论】:

  • php 不会在 .html 扩展中执行。将index.html 更改为index.php 然后检查。还要在index.php 之上添加&lt;?php session_start();?&gt; 以便它可以显示会话数据

标签: javascript php jquery html cookies


【解决方案1】:

使用 cookie 有很多可用的 cookie 插件,例如 cookies.js

编辑---

我假设你正在使用 cookie 插件.. 我用过 https://github.com/js-cookie/js-cookie

这个的JS代码---

$(function () {
    RefreshCode();
})

function RefreshCode()
{
    var counter = Cookies.get('counter');
    if (!counter) {
        Cookies.set('counter', 1);
    } else {
        counter++;
        Cookies.remove('counter');
        Cookies.set('counter', counter);
    }
    console.log(Cookies.get('counter'));
}

这是供您参考的完整示例....

HTML 代码 ---

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
</head>
<body>

    <script src="jquery-3.1.1.min.js"></script>
    <script src="js.cookie.js"></script>
    <script src="CustomCounter.js"></script>
</body>
</html>

希望这个帮助...

【讨论】:

  • 你是如何使用它的..你能分享你的代码吗?它应该可以工作..
  • 查看我的编辑以使用 Cookies 实现这一点......这是完全有效的
  • 非常感谢您的回答。我测试了它,是的,它工作得很好!
  • 很高兴为您提供帮助 :)
【解决方案2】:

您仍然可以使用 cookie,甚至 localStorage 或 sessionStorage 来实现您的要求。您只需要获取页面加载时的值并显示它,然后在重新加载页面时增加该值。试试这个:

<h1></h1>
<button>Refresh</button>
var refreshes = parseInt(sessionStorage.getItem('refreshes'), 10) || 0;
$('h1').text('Refreshed ' + refreshes + ' time(s)');

$('button').click(function() {
    sessionStorage.setItem('refreshes', ++refreshes);
    window.location.reload();
})

Example fiddle

【讨论】:

  • 有问题。当站点关闭时,我希望柜台休息。 localStorage 即使在重新启动浏览器后也会保存计数器值。有什么修复吗?
  • 是的 - 在这种情况下,将 localStorage 替换为 sessionStorage。语法在其他方面是相同的。我为你更新了答案
  • 我将该 js 复制到一个单独的文件中并添加了一个标题,就像在小提琴中一样,但我的页面上没有显示任何内容(是的,我确实通过脚本 src 链接了 js)
  • 检查控制台是否有错误。还要确保您已将代码放入 document.ready 处理程序中,例如。 $(function() { /* code here */ });。 jsFiddle 默认为你做这个
  • 我收到了这个ncaught ReferenceError: $ is not defined
猜你喜欢
  • 1970-01-01
  • 2020-10-22
  • 1970-01-01
  • 2013-07-02
  • 2015-11-25
  • 2021-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多