On sait que l'ordre d'exécution d'une balise est l'attribut onclick->href
当点击浏览器a标签的时候,浏览器的默认机制如下:
1、触发a的click事件
2、读取href属性的值
3、如果是URI则跳转
4、如果是javascript代码则执行该代码
Comment modifier ce mécanisme pour que lorsque l'événement onclick est terminé, l'URL qui exécute l'attribut href saute. La fonction de l'événement onclick envoie une requête ajax et modifie l'attribut href en fonction de la valeur de retour
Après avoir modifié l'attribut href, vous devez ouvrir une nouvelle page dans le navigateur actuel
mise à jour--------------30/06/2017------------------------------------ ---------------
Après les tests, j'ai modifié la requête ajax en exécution synchrone, mais elle ne parvient toujours pas à faire en sorte que la fonction onclick de la balise a termine son exécution avant d'exécuter l'action href
La raison peut être que ajax est modifié en requête synchrone, ce qui bloquera d'autres opérations sur la page en cours,
Mais le clic de la balise a a été terminé et l'action href suivante continue d'être exécutée, et l'action href est void(0) à ce moment, et la requête ajax n'a pas encore été renvoyée à ce moment
Réponse, c'est-à-dire que la demande de synchronisation ajax ne bloque pas l'action du tag a
Dans l'attente de meilleures réponses
$('a').click(function(e) {
var _ = $(this)
$.get(xx, function() {
});
})
Utilisez js pour accéder à la page dans onclick
//ajax start
success:function(){
}
1. Interdire à une balise de sauter href="javascript:void(0)"
.2. Demandez ajax dans la méthode onclick. Après succès, liez la valeur de retour à href
Pourquoi ne pas attribuer d'abord une valeur à
href
, puis sauter une fois la demande terminée ?Tous les événements par défaut dans le navigateur sont désactivés et vous pouvez utiliser
event.preventDefault()
pour les empêcher. Le reste est dans votre fonction de rappel, et vous pouvez faire ce que vous voulez. Bien sûr, si vous devez être compatible avec IE8 et versions antérieures, vous pouvez le faire. peut l'écrire comme suit : :Après une longue attente, s'il vous plaît, mangez