Ссылка Mailto с помощью JQuery

На моем сайте есть ссылка 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>

person Mike    schedule 04.01.2013    source источник


Ответы (2)


Вам не нужен window.location.href= $(this).prop('href');. Если вы просто позволите щелчку продолжаться как обычно, он должен делать то, что вы хотите.

person idrumgood    schedule 04.01.2013
comment
Когда я это делаю, запрос ajax выполняется нормально, но клиент не открывается. Однако, когда я удаляю событие onclick, клиент открывается. - person Mike; 05.01.2013
comment
Попробуйте передать asyc: true с помощью объекта ajaxed. - person lulezi; 05.01.2013
comment
Неважно, я только что понизил версию Outlook 2010 до 2003, и теперь ссылка mailto не работает вообще. У меня был друг, который попробовал это, и все работает нормально. Спасибо за помощь. - person Mike; 05.01.2013
comment
Не за что. Если вы нашли ответ на свой вопрос, отметьте его как «Отвеченный» :) - person idrumgood; 05.01.2013

Чтобы это сработало, вам нужно установить для async значение 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>

Это связано с тем, что некоторые браузеры отменяют ваш текущий запрос ajax при открытии почтового клиента. Вы можете проверить это, перейдя в тот jsfiddle, который я опубликовал, и удалив строку async (проверено в chrome 23.0.1271.97 m, windows 7, outlook 2007.)

person Daniel Moses    schedule 04.01.2013