【问题标题】:Button onclick and save cookie on Drupal 7按钮 onclick 并在 Drupal 7 上保存 cookie
【发布时间】:2016-02-26 00:38:09
【问题描述】:

我有一个 Drupal 7 本地网站,该网站有一篇文章,并且在第一页上有一个弹出窗口指向该文章。在那篇文章中,我还有一个按钮,当用户单击该按钮时,我希望网站能够“记住”用户并且不再显示弹出窗口。我想我可以更改按钮的文本并将其存储为 cookie。 这是按钮的代码:

<button id="test" value="test" onclick="Press()">Press Here</button>
<script>
function Press() {
    var test= document.getElementById("test");
    test.innerHTML="Thank you";
    document.cookie = "Inner"= + test.value +"; expires=Fri, 5 Aug 2016 01:00:00 UTC;";}
</script>

这是处理弹窗的外部js文件的代码:

      function openColorBox(){

if (document.cookie.length != 0){
   var buttonvaluearray = document.cookie.split("=");
   document.getElementById("test").innerHTML = buttonvaluearray[1];
}

if (test.innerHTML != "Thank you"){
        document.getElementById("popup").style.visibility = "visible";
        document.onclick= function(){
        document.getElementById("popup").style.visibility = "hidden";
    }
  }
}
    setTimeout(openColorBox, 5000);

但是当我加载页面时,弹出窗口照常显示,但按钮的文本立即从“Press here”变为“0; Drupal.toolbar.collapsed”。我是一名新的 Web 开发人员,所以我确信我用于 cookie 创建/测试或外部 javascript 文件的 if 语句的代码有问题,但我无法发现错误。有什么建议或意见吗?

【问题讨论】:

    标签: javascript jquery cookies drupal-7


    【解决方案1】:

    结案! 我所要做的就是在第一个脚本中使用 JavaScript 中的 localStorage,然后在外部 js 文件中对其进行测试以创建弹出窗口!

    【讨论】:

    • 我遇到过类似的情况,我无法更改 cookie 或会话以在 drupal 页面中保留页脚,而 localStorage 做到了:localStorage.setItem("hideFooter", 1);。谢谢
    【解决方案2】:

    技巧来了..

    请不要将值存储在客户端,而是将其存储在服务器端并在每个页面上运行检查。

    【讨论】:

    • 这是怎么做到的?你的意思是使用php?我想编辑这篇特定的文章,所以我更改了它的 html 代码。这就是我尝试 JavaScript 的原因
    • 不,不,请不要使用java脚本。这根本不是最佳实践。是的,您需要使用 PHP 会话来存储值。
    • 我不能在文章的 html 中使用 php 代码,对吧?然后,我必须更改 template.php 文件或其他什么?而且,有没有我可以做到这一点的例子?我的 PHP 知识并没有你看到的那么好。
    • 你需要找出渲染HTML模板的函数,所以你需要在那个函数中放置会话。
    • 我希望这仅出现在此特定文章中。我想这是可能的,对吧?另外,您有此功能的在线示例吗?正如我之前所说,我不太擅长 PHP
    猜你喜欢
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多