2010-11-13 13 views
0

J'utilise un calendrier JavaScript (jQuery) où certains événements de calendrier agissent comme des liens. Les événements du calendrier sont des divs qui ont des déclencheurs onclick qui pointent le navigateur vers la bonne page. Le problème est que puisque les événements du calendrier ne sont pas des liens <a href=".."> l'utilisateur ne peut pas cliquer sur Ctrl + clic pour ouvrir le lien vers un nouvel onglet ou sur Maj + clic pour ouvrir une nouvelle fenêtre. Je cherche un moyen d'obtenir cette fonctionnalité au calendrier et il semble que mes options sont:Faire fonctionner les divs comme des liens appropriés

  1. détecter si l'utilisateur a ouvert et Maj enfoncée dans une nouvelle fenêtre ou Ctrl enfoncée et ouverte à un nouvel onglet - Je préférerais ne pas le faire parce que l'ouverture d'un nouvel onglet devra probablement être codée séparément pour chaque navigateur (?) Et pourrait remplacer les préférences de l'utilisateur.
  2. Supprimez les déclencheurs onclick et enveloppez le contenu div à l'intérieur de <a></a> qui remplit la div englobante entière.
  3. Pirater la bibliothèque de calendriers pour utiliser les balises <a> au lieu de divs pour les événements de calendrier cliquables.

Existe-t-il une autre méthode pour dire au navigateur de considérer les divs comme des liens normaux? Y a-t-il des effets secondaires prévisibles aux méthodes # 2 ou # 3?

Répondre

2

Je dirais que votre plus simple/solution la plus complète serait d'utiliser des ancres comme ils sont (par exemple, pas de script requis), il suffit d'utiliser les CSS pour faire le travail ici, avec display: block ou display: inline-block et le style eux comme <div> éléments.

De cette façon, tout le comportement de clic natif peuvent être traitées par le navigateur et les préférences de l'utilisateur ainsi que Ctrl, Maj, etc clic est tout ce que l'utilisateur est attendre à faire.

0

Trouvez un calendrier qui utilise le balisage approprié, ou branchez le plugin et passez à # 3. Le revers de la médaille est que, puisque vous êtes en train de forker, vous vous coupez des améliorations