web-dev-qa-db-fra.com

Impossible de créer un lien externe vers javascript: void ();

En écrivant un article sur éléments de menu sans lien réel , je suis tombé sur un comportement étrange dans Joomla 3.3.3:

Je tenais à souligner qu’un tag <a> Faisant référence à "#" Pouvait faire défiler la page vers le haut lorsque l’utilisateur cliquait dessus, et qu’il serait peut-être préférable d’utiliser javascript:void(); dans le champ de lien pour l'élément de menu External URL. ( Cet article explique pourquoi.)

J'avais l'habitude de le faire moi-même, mais maintenant, j'ai découvert que dans Joomla 3.3.3, l'enregistrement est refusé si le champ de lien contient javascript:void();. Regardez cette capture d'écran (avant et après avoir cliqué sur le bouton "Enregistrer"):

Before and after Save

Je viens de le tester sur une version plus ancienne de Joomla (3.0.3), et je pouvais toujours utiliser javascript:void(); dans le champ du lien.

S'agit-il d'un bogue dans les versions plus récentes de Joomla, ou at-il été décidé que la liaison au javascript n'était plus autorisée, quelque part entre J3.0.3 et J.3.3.3?

7
johanpw

C’était en fait un bogue qui fonctionnait (ou plus précisément un problème de sécurité). Le comportement actuel est correct.

Les références:

Le type d'élément de menu de l'URL externe ne peut pas être enregistré avec javascript: void ()

Comment laisser un élément de menu exécuter Javascript dans Joomla 3.2?

6
Valentin Despa

En complément de la réponse de Valentin, voici comment ajouter du code javascript à un élément de menu:

  • Créer un élément de menu de lien personnalisé
  • Ajouter # dans le champ de lien
  • Gérez l’événement click en ajoutant du javascript ailleurs sur la page (par exemple, dans le pied de page).

Exemple:

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