在mailchimp中点击/提交按钮触发后关闭弹出窗口

时间:2014-07-07 14:39:35

标签: javascript jquery css

我相信选择是吸引人且有效的,但用户体验却很糟糕。即使在他提交电子邮件之后,用户也必须手动关闭弹出窗口。

如何在用户提交电子邮件后关闭弹出窗口?在收到收到的电子邮件后,可能会延迟1-2秒。

demo http://codepen.io/anon/pen/Evsmb

<script type='text/javascript'>
    (function($) {
        window.fnames = new Array();
        window.ftypes = new Array();
        fnames[0]='EMAIL';
        ftypes[0]='email';
        window.mc.showPopup = true;
        window.mc.delayPopup = 2000;
        if (mc.showPopup) mc.evalPopup();
    }(jQuery));
    var $mcj = jQuery.noConflict(true);
</script>

3 个答案:

答案 0 :(得分:0)

这样的事情应该有效。

//Listen for form submit
$('#mc-embedded-subscribe-form').submit(function (e) {

    //hide popup 
    $("#mc_embed_signup").hide();
});

示例:http://jsfiddle.net/Z9qP5/

答案 1 :(得分:0)

如果您浏览MailChimp's EvilPopup JavaScript file,或者只是从Firefox / Chrome中的控制台运行console.log(mc);

您会注意到脚本提供成功回调mce_success_cb() mce_success_cb()ajaxOptions.success回调处理程序。ajaxOptions.complete是未使用且可用的ajaxOptions.completeclosePopup()函数用于关闭弹出窗口。

因此,您可以通过以下代码实现目标。

<script type='text/javascript'>
(function($) {
    window.fnames = new Array();
    window.ftypes = new Array();
    fnames[0]='EMAIL';
    ftypes[0]='email';
    window.mc.ajaxOptions.complete = function() {
        setTimeout(function(){
            // Only close the popup if there are no errors
            if($('#mce-error-response').is(':hidden'))
                window.mc.closePopup();
        }, 2000);
        // 2000ms delay before closing popup
    };
    window.mc.showPopup = true;
    window.mc.delayPopup = 2000;
    if (mc.showPopup) mc.evalPopup();
}(jQuery));
var $mcj = jQuery.noConflict(true);
</script>

请注意,mc.closePopup()还会将Cookie MCEvilPopupClosed设置为有效期为+1,这会阻止弹出窗口在上面的脚本中再次自动弹出,该脚本使用函数{{ 1}}根据cookie有条件地显示弹出窗口。

如果您希望即使设置了mc.evalPopup() Cookie也强行显示弹出窗口,例如,点击按钮时,请使用MCEvilPopupClosed

window.mc.delayPopup = 0; window.mc.openPopup();设置为0可确保立即显示弹出窗口。

答案 2 :(得分:0)

Prathamesh Gharat的回答非常适合我,只需一次调整:检查#mce-success-response是否可见,而不是检查隐藏#mc-error-response

无论出于何种原因,输入某些类型的格式错误的电子邮件地址(如假冒@nodotanything)会隐藏#mce-error-response,而不会生成#mce-success-response

更改后的代码如下所示:

window.mc.ajaxOptions.complete = function() {
    setTimeout(function(){
        // Only close the popup if there is a successful response
        if($('#mce-success-response').is(':visible'))
            window.mc.closePopup();
    }, 2000);
    // 2000ms delay before closing popup
};