javascript - 删除 Mailchimp 弹出窗口的 cookie

标签 javascript jquery cookies popup mailchimp

我有一个 WordPress 网站,您单击一个 div,就会弹出一个 mailchimp 弹出表单。一个问题是,mailchimp 存储一个 cookie 以确保弹出窗口仅执行一次。但由于我现在只需单击一下即可完成此操作,因此我想删除该 cookie。

这是我的代码:

var mailchimpConfig = {
        baseUrl: 'mc.us17.list-manage.com',
        uuid: '1356322e2......rest of my code',
        lid: '36776d...rest of my code'
    };

    // No edits below this line are required
    var chimpPopupLoader = document.createElement("script");
    chimpPopupLoader.src = '//s3.amazonaws.com/downloads.mailchimp.com/js/signup-forms/popup/embed.js';
    chimpPopupLoader.setAttribute('data-dojo-config', 'usePlainJson: true, isDebug: false');

    var chimpPopup = document.createElement("script");
    chimpPopup.appendChild(document.createTextNode('require(["mojo/signup-forms/Loader"], function (L) { L.start({"baseUrl": "' +  mailchimpConfig.baseUrl + '", "uuid": "' + mailchimpConfig.uuid + '", "lid": "' + mailchimpConfig.lid + '"})});'));

    jQuery(function ($) {
        document.body.appendChild(chimpPopupLoader);

        jQuery(".coming-soon").on("click", function () {
            alert("Hello");
            document.body.appendChild(chimpPopup);
            document.cookie = 'MCEvilPopupClosed=;path=/;expires=Thu, 01 Jan 1970 00:00:00 UTC;';
        });

    });

于是上网查了一下,发现大家都是用这个代码来删除cookie的。

document.cookie = 'MCEvilPopupClosed=;path=/;expires=Thu, 01 Jan 1970 00:00:00 UTC;';

这个问题对我来说不起作用。我已经在隐身模式下完成了所有测试,并且只能让弹出窗口工作一次。

最佳答案

Cookie 的名称是 MCPopupClosed,而不是 MCEvilPopupClosed。我不知道为什么,但 MailChimp 一定在某个时候改变了它。

还有另一个名为 MCPopupSubscribed 的 cookie,如果用户订阅而不是使用“X”按钮关闭弹出窗口,则会设置该 cookie。如果您希望即使用户已订阅也显示弹出窗口,您还需要清除该 cookie。

不过,清除这两个 cookie 只会使其在页面加载后工作一次。我遇到了this code在研究问题时,如果您将 require 放在点击函数而不是脚本标记中,它就可以正常工作。这样做还可以避免每次单击元素时都必须删除 appendChild 函数生成的脚本标记。

所以更新后的代码如下所示:

var mailchimpConfig = {
        baseUrl: 'mc.us17.list-manage.com',
        uuid: '1356322e2......rest of my code',
        lid: '36776d...rest of my code'
    };

// No edits below this line are required
var chimpPopupLoader = document.createElement("script");
chimpPopupLoader.src = '//s3.amazonaws.com/downloads.mailchimp.com/js/signup-forms/popup/embed.js';
chimpPopupLoader.setAttribute('data-dojo-config', 'usePlainJson: true, isDebug: false');

jQuery(function ($) {
    document.body.appendChild(chimpPopupLoader);

    jQuery(".coming-soon").on("click", function () {
        require(["mojo/signup-forms/Loader"], function (L) { L.start({"baseUrl": mailchimpConfig.baseUrl, "uuid": mailchimpConfig.uuid, "lid": mailchimpConfig.lid})});
        document.cookie = 'MCPopupClosed=;path=/;expires=Thu, 01 Jan 1970 00:00:00 UTC;';
        document.cookie = 'MCPopupSubscribed=;path=/;expires=Thu, 01 Jan 1970 00:00:00 UTC;';
    });

});

关于javascript - 删除 Mailchimp 弹出窗口的 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46994951/

相关文章:

javascript - 使用 Javascript 选择单个表单

javascript - 如何根据值对对象进行排序?

javascript - 如何将对象分配给本地存储而不是分配给每个项目?

javascript - 使用 jQuery 禁用除滚动条之外的所有点击操作

jquery - 如何让输入框只接受数字

java - 在 spring boot 2.0.0 中设置 jvmRoute

xcode - El Capitan 中的 stringWithContentsOfURL cookie jar

javascript - DOM javascript-添加所有选定的元素

ios - Swift 避免网站的 cookies 警告

javascript - 如何通过样式属性值选择字体