Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

233
Visualizações
El mouseover de la ruta SVG no funciona con el folleto

Tengo un problema en el que un evento de mouseover no funciona con un elemento de path SVG cuando uso un panel de superposición de folleto. Creo 3 elementos SVG (usando D3.js): un circle , un rect y una path . Todos se muestran bien, y los eventos de mouseover funcionan en el circle y el rect , pero no en la path . Si creo los mismos 3 elementos sin Leaflet, todos funcionan bien.

Aquí está el código javascript

 var mymap = L.map('mapid').setView([51.505, -0.09], 13); L.tileLayer("https://tile.openstreetmap.org/{z}/{x}/{y}.png").addTo(mymap); //initialize svg to add to map L.svg({clickable:true}).addTo(mymap)// we have to make the svg layer clickable const overlay = d3.select(mymap.getPanes().overlayPane) const svg = overlay.select('svg').attr("pointer-events", "auto") svg.append('path') .attr('d', 'M 110 110 H 190 V 190 H 110 L 110 110') .style("fill", "green") .attr("stroke", "black") .on('mouseover', () => { console.log("mouseover path"); d3.select(event.currentTarget).style("fill", "blue") }) .on('mouseout', () => { d3.select(event.currentTarget).style("fill", "green") }) svg.append('circle') .attr("cx", 300) .attr("cy", 200) .attr("r", 75) .style("fill", "yellow") .attr("stroke", "black") .on('mouseover', () => { console.log("mouseover circle"); d3.select(event.currentTarget).style("fill", "blue") }) .on('mouseout', () => { d3.select(event.currentTarget).style("fill", "yellow") }) svg.append('rect') .attr("x", 500) .attr("y", 200) .attr("width", 75) .attr("height", 75) .style("fill", "red") .attr("stroke", "black") .on('mouseover', () => { console.log("mouseover rect"); d3.select(event.currentTarget).style("fill", "blue") }) .on('mouseout', () => { d3.select(event.currentTarget).style("fill", "red") })

Aquí está como un JSFiddle

Y aquí está el mismo código sin Leaflet que funciona como espero

¿Alguien puede explicar por qué el evento mouseover no funciona con el elemento de path ? ¡Gracias!

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Si inspecciona la ruta en el depurador de su navegador, verá que Leaflet.css contiene esto...

.icono de marcador de folleto, .sombra de marcador de folleto, .capa de imagen de folleto, .panel de folleto > ruta svg, .contenedor de mosaico de folleto { eventos de puntero: ninguno; }

Por lo tanto, desactiva explícitamente los eventos de puntero para todas las rutas que son descendientes directos de las etiquetas SVG.

Puede anular esto agregando

 .style("pointer-events", "auto")

al código de generación de ruta.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda