我相信选择是吸引人且有效的,但用户体验却很糟糕。即使在他提交电子邮件之后,用户也必须手动关闭弹出窗口。
如何在用户提交电子邮件后关闭弹出窗口?在收到收到的电子邮件后,可能会延迟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>
答案 0 :(得分:0)
这样的事情应该有效。
//Listen for form submit
$('#mc-embedded-subscribe-form').submit(function (e) {
//hide popup
$("#mc_embed_signup").hide();
});
答案 1 :(得分:0)
如果您浏览MailChimp's EvilPopup JavaScript file,或者只是从Firefox / Chrome中的控制台运行console.log(mc);
。
您会注意到脚本提供成功回调(mce_success_cb()
mce_success_cb()
是ajaxOptions.success
回调处理程序。ajaxOptions.complete
是未使用且可用的ajaxOptions.complete
和closePopup()
函数用于关闭弹出窗口。
因此,您可以通过以下代码实现目标。
<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
};