1

我的网站上有一个可以正常工作的 mailto 链接。但是,我想在用户单击该链接时对其执行 .click() 事件以进行记录。我有 .click 事件工作并执行 ajax 请求,但现在 mailto 链接没有打开电子邮件客户端。是否可以在客户端打开之前运行 jquery 函数,但仍使客户端打开?

这是我的代码(它只是在浏览器中打开一个空白窗口)

<script type='text/javascript'>
                    jQuery('span.email a').on('click',function (){
                        jQuery.ajax({
                            type: 'POST',
                            url: '', //url here
                            data: {comment: 'Email Sent', category : 'EE', store_id: '" . $this->store_id . "'},
                            success: function (data){jQuery('#alerts').html(data);}
                        });
                    window.location.href= $(this).prop('href');
                });
                </script>
4

2 回答 2

5

为了使其正常工作,您需要将异步设置为 false。

http://jsfiddle.net/5nwu7/3/

<script type='text/javascript'>
                jQuery('span.email a').on('click',function (){
                    jQuery.ajax({
                        type: 'POST',
                        url: '', //url here
                        data: {comment: 'Email Sent', category : 'EE', store_id: '" . $this->store_id . "'},
                        success: function (data){jQuery('#alerts').html(data);},
                        async: false
                    });
                //You don't need this ---window.location.href= $(this).prop('href');
            });
            </script>

This is because some browsers will cancel your current ajax request when opening the mail client. You can test this by going to that jsfiddle I posted and removing the async line (tested in chrome 23.0.1271.97 m, windows 7, outlook 2007.)

于 2013-01-04T21:48:56.157 回答
3

你不需要window.location.href= $(this).prop('href');. 如果你只是让点击继续正常,它应该做你想做的事。

于 2013-01-04T21:09:23.433 回答