【问题标题】:set a cookie clicking a menu link in wordpress在 wordpress 中单击菜单链接设置 cookie
【发布时间】:2014-10-24 21:51:34
【问题描述】:

单击特定菜单链接时,我需要注册一个 cookie(我使用此 cookie 将移动用户从移动版网站重定向到桌面版)。 在非 WP 站点中,我只使用 onclick 属性来实现这一点,如下例所示:

<script>
function setupCookie() {
    document.cookie = "desktop=true;domain=.mysite.com";
}
</script>

    <a href="mysite.com" onclick="setupCookie();"> Desktop version </a>

但是由于菜单的处理方式,我在 Wordpress 中执行此操作时遇到了问题,HTML 结构是这样的(我使用自定义 CSS WP 菜单字段添加了 desktop-redirect 类)。

<li class="desktop-redirect menu-item menu-item-type-custom menu-item-object-custom menu-item-1261">

<a href="mysite.com">Desktop version</a>

</li>

我尝试过这样的事情:

function setupCookie() {
        document.cookie = "desktop=true;domain=.mysite.com";
    }
    element.addEventListener("click", setupCookie(),false);
    var element = document.getElementsByClassname("desktop-redirect")[0].getElementsByTagName("a")[0];

但它不起作用(desktop-redirect 类是该 li 元素所独有的)。

提前致谢。

【问题讨论】:

  • 你的 element.addEventListener 不应该在你声明变量之后来吗?
  • 我使用了另一个问题作为他们使用该顺序的参考,但是即使我在 element.addEventListener 之前定义了元素 var,它仍然不起作用

标签: javascript wordpress cookies


【解决方案1】:

试试这个:

function setupCookie() {
    document.cookie = "desktop=true;domain=.mysite.com";
}
document.getElementsByClassName("desktop-redirect")[0].getElementsByTagName("a")[0].addEventListener("click", setupCookie);

请注意,您的 getElementsByClassName 没有将名称中的“N”大写...不确定这是您的代码还是错字,但这是一个问题。此外,您在函数调用中省略了 ()。

【讨论】:

  • 不幸的是它不起作用,看着控制台我看到这个错误“TypeError: document.getElementsByClassName(...)[0] is undefined”
  • 如果它未定义,那么您找不到任何具有所述类名的元素。尝试设置一个包含 document.getElementsByClassName("desktop-redirect") 的变量,然后将其推送到控制台以查看结果。听起来错误更多地与在页面上查找实际元素有关!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多