it-swarm-eu.dev

Impossibile creare un collegamento esterno a javascript: void ();

Durante la scrittura di un post su voci di menu senza un link reale , mi sono imbattuto in uno strano comportamento in Joomla 3.3.3:

Volevo sottolineare che un tag <a> Che collega a "#" Potrebbe far scorrere la pagina verso l'alto quando si fa clic e che potrebbe essere meglio usare javascript:void(); in il campo del collegamento per la voce di menu External URL. ( Questo articolo spiega perché.)

Lo facevo da solo, ma ora ho scoperto che in Joomla 3.3.3 si rifiuta di salvare se il campo link contiene javascript:void();. Dai un'occhiata a questo screenshot (prima e dopo aver premuto il pulsante "Salva"):

Before and after Save

L'ho appena testato su una versione precedente di Joomla (3.0.3) e potevo ancora usare javascript:void(); nel campo link.

È un bug nelle versioni più recenti di Joomla o è stato deciso che il collegamento a javascript non è più consentito, da qualche parte tra J3.0.3 e J.3.3.3?

7
johanpw

In realtà era un bug che funzionava (o per essere più specifico un problema di sicurezza). Il comportamento attuale è corretto.

Riferimenti:

Il tipo di voce di menu di URL esterno non può essere salvato con javascript: void ()

Come consentire alla voce di menu di eseguire Javascript in Joomla 3.2?

6
Valentin Despa

In aggiunta alla risposta di Valentin, ecco come aggiungere il codice javascript a una voce di menu:

  • Crea una voce di menu di collegamento personalizzata
  • Inserisci # nel campo del collegamento
  • Gestisci l'evento click aggiungendo javascript altrove sulla pagina (ad es. Nel piè di pagina).

Esempio:

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