it-swarm-es.tech

No se puede crear un enlace externo a javascript: void ();

Mientras escribía una publicación en elementos de menú sin un enlace real , me encontré con un comportamiento extraño en Joomla 3.3.3:

Quería señalar que una etiqueta <a> Que se vincula a "#" Podría hacer que la página se desplace hacia arriba al hacer clic, y que sería mejor usar javascript:void(); en el campo de enlace para el elemento de menú External URL. ( Este artículo explica por qué.)

Solía ​​hacerlo yo mismo, pero ahora descubrí que en Joomla 3.3.3, se niega a guardar si el campo de enlace contiene javascript:void();. Echa un vistazo a esta captura de pantalla (antes y después de presionar el botón "Guardar"):

Before and after Save

Acabo de probarlo en una versión anterior de Joomla (3.0.3), y aún podría usar javascript:void(); en el campo de enlace.

¿Es esto un error en las versiones más recientes de Joomla, o se decidió que ya no se permite vincular a JavaScript, en algún lugar entre J3.0.3 y J.3.3.3?

7
johanpw

En realidad, fue un error que funcionó (o para ser más específico, un problema de seguridad). El comportamiento actual es correcto.

Referencias

El tipo de elemento de menú de URL externa no se puede guardar con javascript: void ()

¿Cómo dejar que el elemento del menú ejecute Javascript en Joomla 3.2?

6
Valentin Despa

Como una adición a la respuesta de Valentin, así es cómo agregar código javascript a un elemento del menú:

  • Crear un elemento de menú de enlace personalizado
  • Añadir # en el campo de enlace
  • Maneje el evento click agregando javascript en otra parte de la página (por ejemplo, en el pie de página).

Ejemplo:

jQuery(document).ready(function($){   
  $(".menuitemclass").click(function () {
    //your javascript function;     
  });
});
3
johanpw