processmaker ocultar getcontrol campos javascript jquery google-chrome firefox onclick

javascript - ocultar - El evento "onclick" no funciona en FF y Chrome



ocultar campos processmaker (4)

Tengo algunas rutas SVG dentro de un div con un atributo onclick :

<path class="limbs" id="limb1" d="some coordinates here" onclick="open(1)" />

La función open() se define en un archivo JS separado, que se implementa justo antes de la etiqueta body (como el archivo jQuery):

function open(n) { $("#information").fadeIn(); $("#info" + n).fadeIn(); }

div#info1 , por ejemplo, es un cuadro de información dentro de la información div#information , un fondo negro semitransparente a pantalla completa (le da un efecto de caja de luz).

Todo funciona bien con Safari. Sin embargo, si lo intento con FF o Chrome, el navegador parece cargar una nueva página cuando hago clic (lo que no debería suceder) y da como resultado una pantalla en blanco sin código fuente.

La página se puede ver aquí: frank.schufi.ch/3dmapping


hay algunos comportamientos de incompatibilidad entre los navegadores, por lo que este podría ser el motivo por el que ocurre y, por el qué, me parece que se está llamando a otra función de open(n) . intente cambiar el nombre de la función, por decir:

newOpen(n)

ver si ayuda.


onclick no parece ser un atributo válido de <path /> . Por lo tanto, es probable que el navegador no agregue un oyente a ese evento. Intente envolver el elemento <path /> en un elemento que activará un evento onclick luego ponga onclick en ese elemento, o como algunas de las otras respuestas aquí están aconsejando, use jQuery para forzar a un oyente en ese elemento dom y desencadenar un evento al hacer clic. Es probable que addEventListener con vanilla js y logre lo mismo sin jQuery también.


<path class="limbs" id="limb1" d="some coordinates here" data-open="1" /> $(''#limb1'').click( function (e){ e.preventDefault(); var n = $(this).data(''open''); $("#information").fadeIn(); $("#info" + n).fadeIn(); }


Como Haocheng comentó, una manera más actualizada de hacer esto es crear un controlador de eventos para hacer clic en la ruta. Básicamente, llegarías al mismo objetivo con este fragmento de jQuery:

$(''.limbs'').click(function() { $("#information").fadeIn(); $("#info" + $(this).attr(''id'')).fadeIn(); });

No estoy seguro de si esto marcará una diferencia en el resultado, ya que alguien señaló que podría tener que ver con el hecho de que llamó a su función open() , por lo que podría ser. Lo que le sugiero que intente si todavía tiene problemas, es agregar preventDefault() , como este:

$(''.limbs'').click(function(event) { event.preventDefault(); $("#information").fadeIn(); $("#info" + $(this).attr(''id'')).fadeIn(); });

Esto elimina el comportamiento predeterminado de HTML. Por ejemplo, si .limbs estaría atado a un elemento <a> , evitaría el comportamiento estándar de seguir ese enlace. Por otra parte, cambiar el nombre de la función a newOpen () también puede ser suficiente. :)