2009-06-08 8 views
4

J'ai un lien d'ancrage avec les événements href et onclick spécifiés. L'onclick définit location.href à l'URL du serveur et href à un autre lien. Lorsque le lien est cliqué, l'événement href est toujours appelé, mais l'événement onclick n'est appelé qu'une seule fois (c'est-à-dire pour un seul lien d'ancrage). Si je débogue javascript cela fonctionne correctement qu'il appelle à la fois href et onclick.Quel peut être le problème?Problème Href et onclick dans le lien d'ancrage

+0

Je pense que vous avez besoin de plus d'informations. Pourquoi essayez-vous d'envoyer deux demandes avec une balise d'ancrage? Que voulez-vous dire "est appelé une seule fois" - seulement pour une balise d'ancrage, pas tous ou seulement la première fois, mais pas après le remplacement de la page? – tvanfosson

+0

On ne sait pas exactement quel est votre objectif. Quand vous dites onclick définit un emplacement, et href - un autre, à quel endroit souhaitez-vous que l'utilisateur se rende? Vous réalisez qu'il ne peut pas aller aux deux endroits sur une page. En vérifiant les commentaires à une partie de la réponse, j'ai l'impression que vous voulez amener l'utilisateur à un emplacement et ensuite rediriger vers un autre. Si oui, la redirection doit être émise du côté serveur. C'est à dire. Si vous avez href = "/ target.html" et onclick = "window.location = '/ action.call'" vous devez mettre "/action.call" à href, et sur le côté serveur, envoyer le statut HTTP 302 redirect. En outre, recherchez "rediriger après publication"! – mvmn

Répondre

12

Essayez

<a href="whatever.html" onclick='window.location.href="http://whereverelse";return false;'>linky</a> 

juste pour expliquer: le retour faux dans ce cas, empêche l'action par défaut.

Pourquoi voudriez-vous faire cela?

+0

Je suppose que retourner faux va arrêter href fonctionnement.Mais je veux les deux à travailler.Onclick fonctionne côté serveur comme mise à jour de la base de données après laquelle je veux rediriger l'utilisateur vers le lien approprié qui est spécifié dans href.Mais cela se produit une seule fois comme indiqué dans le problème. J'ai essayé de rediriger l'utilisateur du côté du serveur lui-même, mais il échoue si l'URL commence avec des protocoles différents comme mms: //, notes: // etc. –

+2

location.href est pour changer la page en cours. On dirait que vous voulez faire une demande AJAX –

+0

oh c'est tellement paresseux comme moi ... Deuuuude combien de temps vous pensez que vous pouvez éviter AJAX .. s'il vous plaît DONNER ... j'ai essayé la même chose une fois et j'ai maintenant ... croyez-moi, il y a la paix dans la soumission ... lol – Moon

5

Il semble que vous vouliez que le lien appelle une page qui exécute du code côté serveur (tel que PHP), puis dirige le navigateur vers un autre emplacement. Cela se fait généralement en demandant au script côté serveur d'envoyer une réponse de redirection avec la seconde URL.

1

Pour ceux qui ont dit "Pourquoi?", J'ai une raison. Clics moyens. Peut-être avez-vous AJAX qui peut obtenir les détails du serveur et les préparer ensuite dans la même page, mais si un clicker moyen veut voir ces données dans une nouvelle page, elles sont bloquées. Ainsi, les rapports fourniraient la même fonctionnalité aux utilisateurs qui le souhaitent. En tant que cliqueur moyen habituel, je déteste les tags avec une passion. mais j'ai trouvé avec GreaseMonkey, je peux parfois réaffecter le javascript href à l'onclick, et essayer d'analyser une URL valide pour le href. Je souhaite vraiment que l'ouverture de Javascript dans un nouvel onglet ne ferait que cloner la page puis exécuter le code.

Questions connexes