9 votos

¿Cómo puedo detener la propagación de eventos con el botón derecho del ratón sobre el Prospecto marcador?

Yo no encuentro botón derecho del ratón en un evento en el Folleto de marcadores así que empecé a escuchar el evento mousedown. En el método que resuelve este caso puedo comprobar

if (event.originalEvent.button == 2) {
    do_something();
    // now i want to stop propagation of the rightclick
    return;
}

Esto funciona en la que do_something() es llamado, pero el evento se propaga en el mapa y un contextmenu. ¿Cómo puedo evitar que el evento se propaguen a la mapa?

Funciona en todos los principales (es decir, IE) de los navegadores?

5voto

Andrew Medico Puntos 157

Pruebe esta función interna:

L.DomEvent.stopPropagation(event);

Se debe hacer el truco.

P. S. nunca he encontrado que en toda la documentación, pero vio que se usa en un parche. Utilice a su propio riesgo. ;)

Edit: también he encontrado esta función interna

L.DomEvent.preventDefault(event);

Que se parece muy mucho a la event.preventDefault() que está en jQuery.

4voto

Andrew Medico Puntos 157

Mi primera respuesta fue apprently no funciona y ahora estoy enfrentando el mismo problema aquí un nuevo enfoque:

Prospecto apoya un evento llamado contextmenu. Como se encuentra en el Folleto del evento documentación aquí.

Se activa cuando el usuario presiona el botón derecho del ratón sobre el mapa, impide que el navegador predeterminado en el menú contextual de mostrar si hay oyentes en este evento.

Así que, en teoría, el código de

marker.on('contextmenu', function(e) {
  this.openPopup();
});

debería funcionar bien. Pero al parecer, la aplicación está detrás de la documentación. A partir de ahora (Folleto 0.4.5) contextmenu caso es que al parecer no es todavía compatible con marcadores, aunque funciona perfectamente bien en objetos de polilínea.

Parece ser que el trabajo en la tubería para habilitar esta característica en el futuro cercano (ver discusiones aquí y aquí). Así que, supongo que sólo podemos esperar que el Prospecto trabaja en esto de manera rápida y permite que el evento de que en la próxima versión...

Editar: Hacer caso omiso de lo que he dicho acerca de la espera de la aplicación. Si se descarga el último desarrollo de la rama master y construir folleto usted obtener soporte completo para contextmenu eventos en los marcadores. Feliz codificación.

4voto

Devdatta Tengshe Puntos 942

Prevenir el comportamiento por defecto en IE y el resto de navegadores:

event.returnValue = false;
if (event.preventDefault) event.preventDefault();

2voto

Jon Puntos 631

Tengo una solución a propósito para la detención del evento.

Por ejemplo, si un evento es creado como este - map.on("click", onMapClick);, el evento puede ser detenida con este código - map.off("click", onMapClick);

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X