event.preventDefault () no detiene los enlaces mailto con gmail

Tengo una función jQuery con even.preventDefault () aplicada a un clic en cualquier elemento con la clase 'editable'.

Sin embargo, no impide que Gmail abra su interfaz Sweb para enviar un correo electrónico. Funciona en sistemas donde el comportamiento de correo predeterminado no está configurado (en el que estaba probando principalmente) ... no estoy seguro de cuándo se ejecuta a través de Outlook o una aplicación de correo real.

¿Existe alguna solución para esto?

$('.editable').not('video, img, textarea').click(function(event) { 
        event.preventDefault();
        loadEditor($(this));
    });

editar: también lo he intentado con event.stopPropagation (); pero todavía está pasando.

preguntado el 28 de agosto de 11 a las 03:08

Si el problema está en los enlaces mailto, ¿puede eliminar el atributo href? -

no fácilmente ... estoy tomando el valor del href para editar las propiedades del enlace (este es un editor de jquery que usa el mismo código fuente de la situación de la página). Podría quitar el href y ponerlo en otro lugar, pero eso tomaría un poco de rejigging -

en realidad, eliminar solo el 'mailto:' funcionará ... tiene básicamente la misma información. $('a[href^="mailto:"]').each(function(){ this.href = this.href.replace("mailto:",""); }); -

5 Respuestas

El manejo de eventos de la interfaz de Gmail probablemente esté ocurriendo en el navegador, así que intente llamar event.stopPropagation

Respondido 28 ago 11, 07:08

intente agregar retorno falso,

$('.editable').not('video, img, textarea').click(function(event) { 
        event.preventDefault();
        loadEditor($(this));
        return false;
    });

event.preventDefault () frente a devolver falso

contestado el 23 de mayo de 17 a las 15:05

Vale la pena explicar eso return false tiene el efecto de Además, "Hacer" event.stopPropagation(); - Yahel

event.preventDefault() funciona para elementos que tienen un comportamiento predeterminado asociado a ellos.

Por ejemplo, los elementos de anclaje redirigen a la URL establecida en el href, el evento de envío del formulario envía el formulario. Para tales casos event.preventDefault () detendrá su comportamiento.

El problema al que se enfrenta es la propagación de eventos, debe usar event.stopPropagation () junto con (event.preventDefault () o devolver falso).

 $('.editable').not('video, img, textarea').click(function(event) { 
        event.stopPropagation();
        loadEditor($(this));
        return false;
    });

Respondido 28 ago 11, 07:08

No estoy seguro de si realmente hay una manera de evitar esto, ninguno de los comandos de jQuery relacionados con eventos mencionados en otras respuestas fue efectivo.

Mientras tanto, estoy eliminando la parte 'mailto' del enlace cuando la edición está habilitada y funciona bien.

Respondido el 14 de Septiembre de 11 a las 19:09

Para aquellos de ustedes que todavía tienen problemas para averiguar por qué no hay ningún efecto en el botón enviar enlace que también enlaza a mailto, creo que el problema es la extensión Mailto: for Gmail para Chrome. El enlace funciona bien en Firefox. Y el enlace funciona bien una vez que la extensión mencionada está deshabilitada en Chrome.

Respondido 11 Feb 14, 20:02

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.