【问题标题】:Adding a class to Body in PHP and keeping it with a session在 PHP 中向 Body 添加一个类并将其保存在会话中
【发布时间】:2016-06-11 00:35:31
【问题描述】:

我一直在尝试自己解决这个问题,但我似乎无法对其进行排序。

我正在客户网站上构建一个可访问性部分,我有两个按钮,这些按钮向正文添加一个类,一个是 font-size 另一个是 greyscale

我需要这些类保留在正文上,直到再次单击以删除,因为用户不希望必须继续单击按钮才能看到该站点。

我想用 session 或 cookie 来存储这些类,但是在阅读了一些内容后,session 还是会存储 cookie,所以无论哪个是最好的选择。

我在网站上使用 wordpress,所以如果有什么我可以在功能方面使用的东西,知道会很有用!

谁能帮帮我?

【问题讨论】:

    标签: javascript php jquery wordpress session


    【解决方案1】:

    如果你想使用 localStorage,你可以使用这个代码。

    // Check if localStorage is supported
    if ('localStorage' in window && typeof localStorage == 'object') {
      $(document).ready(function() {
        // Set the class if greyscale is set
        // Note that localStorage saves everything as strings
        if (localStorage["greyscale"] == "1") {
          $('body').addClass('greyscale');
        }
        // Register click listener for the button
        $('#button').click(function() {
          // Toggle greyscale on and off
          if (localStorage["greyscale"] != "1") {
            $('body').addClass('greyscale');
            localStorage["greyscale"] = "1";
          }
          else {
            $('body').removeClass('greyscale');
            localStorage["greyscale"] = "0";
          }
        }); // - button click
      }); // - doc ready
    }
    

    JSFiddle

    【讨论】:

    • 你推荐一个后备的家伙吗?不过,在检查了Can I Use 之后,它似乎得到了很好的支持,不需要...
    • 如果你愿意,你可以做一个后备。这取决于您想要提供支持的顽固程度。我不会推荐它,因为我认为要满足极少数用户(如果有的话)需要做很多工作。
    • 这样做的目的是为了便于访问,它可以回溯到 IE8,但不能在 Opera 上运行,所以我希望慈善机构和有视力障碍的人拥有最新的计算机。老年人也是。
    【解决方案2】:

    会话通常使用cookies,但数据存储在服务器端,cookie仅用于识别它。

    假设你没有理由知道用户是否在服务器端使用灰度,你可以完全在 JS 中做到这一点。

    例如使用一些简洁的 jQuery 插件来处理 cookie https://github.com/carhartl/jquery-cookie

    //set cookie and add class on button click
    $('#button').click(function(){
        $.cookie('greyscale', true);
        $('body').addClass('greyscale');
    });
    
    //check for cookie on document load
    $(function(){
        if($.cookie("greyscale")){
            $('body').addClass('greyscale'); 
        }
    });
    

    另外请记住,此 cookie 将被发送到服务器并一遍又一遍地返回,因此如果您在服务器端不需要它,您应该使用一些更现代的解决方案,例如 HTML5 localStorage。很少有库可用于将数据保存在客户端。他们在旧浏览器上使用现代功能并回退到旧功能(如 cookie)。例如,请查看http://pablotron.org/software/persist-js/

    【讨论】:

    • 我目前正在使用与 jQuery.Cookie 类似的东西,但是,添加和删除 cookie 似乎存在问题。您将如何在点击时删除 cookie 并确保在刷新时它不会改变这些状态?
    • 请查看您正在使用的插件的文档。有了这个github.com/carhartl/jquery-cookie,你可以做 $.removeCookie('greyscale');删除 cookie。还要检查 Firefox firebug 或 chromium 开发人员工具的“cookies”选项卡,以测试浏览器中实际发生的情况。
    • 是的,我很深入,只是遇到了添加和删除 cookie 的问题,$.removeCookie 通常不喜欢删除 cookie 来删除类
    • 如果您遇到问题,您可以尝试简单地将 cookie 设置为 false 而不是删除它来查看问题出在哪里。 $.cookie('灰度', false);
    【解决方案3】:

    this answer中所述:

    主要区别在于会话数据存储在服务器上,而 cookie 数据存储在客户端上。因此,客户端可以轻松修改 cookie 内容,但必须更加努力地修改会话内容。

    【讨论】:

    • 为解释这些之间的区别而欢呼,所有存储的是 YES 或 NO,这将打开或关闭课程,所以如果用户想自己更改,他们可以发疯跨度>
    • 完全正确;) Cookie 是必经之路
    【解决方案4】:

    有几种方法可以解决这个问题

    1) 将信息保存在 $_SESSION 中。

    2) 将信息保存在 cookie 中。

    根据您的情况和您要存储的数据(不是关键的),我建议您将其存储在 cookie 中,而不要打扰服务器来跟踪每个用户。

    您可以通过 javascript 轻松地将信息存储在 cookie 中。

    这里有一个 javascript cookie 参考供您参考:

    http://www.w3schools.com/js/js_cookies.asp

    将您的信息存储在 cookie 中后,您可以通过 javascript 或 php 检索存储在 cookie 中的信息。 记住: Javascript = 客户端(服务器不会被打扰)& 在你的 dom 准备好之后,你必须将相应的类添加到你的 body 中。 PHP = 服务器端,这意味着您不必在 dom 准备好后添加一个类,并使用已在元素上设置的适当类打印您的 html。

    PHP cookie 参考:

    http://www.w3schools.com/php/php_cookies.asp

    http://davidwalsh.name/php-cookies

    【讨论】:

    • 请不要使用 w3schools 作为参考,请参阅 w3fools.com 以获得解释,为什么不在教育材料中参考此站点。
    • 不知道这个网站,我刚开始时 w3schools 帮助了我。当时我没有遇到任何问题。
    • js_cookies.asp 链接上的示例代码包含大量错误。而且代码通常是不好的做法,甚至没有正确格式化。看最后一个例子,他们在没有<script></script> 标签的HTML 中使用JavaScript,.. 它不会工作
    【解决方案5】:

    将其存储在 cookie 中。

    使用 cookie,您可以选择 cookie 何时过期,使用会话时 - 会话被破坏时,信息会丢失,例如。当用户注销时。

    用户必须手动删除您的 cookie 才能删除“body class 信息”

    【讨论】:

      猜你喜欢
      • 2011-12-03
      • 2014-02-15
      • 1970-01-01
      • 1970-01-01
      • 2011-01-26
      • 2013-10-14
      • 2013-08-18
      • 2012-12-23
      • 1970-01-01
      相关资源
      最近更新 更多