javascript - Comment modifier le mécanisme de déclenchement par défaut de l'attribut a tag du navigateur?
伊谢尔伦
伊谢尔伦 2017-07-01 09:12:15
0
9
1813

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

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

répondre à tous(9)
过去多啦不再A梦

$('a').click(function(e) {

e.preventDefault()

var _ = $(this)
$.get(xx, function() {

location.href = _.attr('href')

});
})

淡淡烟草味
$('a').click(function() {
  var link = this
  $.get(xx, function() {
    location.href = link.href 
  });
  return false // 阻止先不跳转
})
曾经蜡笔没有小新

Utilisez js pour accéder à la page dans onclick
//ajax start
success:function(){

//todo。。。。。

window.location.href = 'url'

}

刘奇

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

.
typecho

Pourquoi ne pas attribuer d'abord une valeur à href, puis sauter une fois la demande terminée ?

学霸
1、禁止a标签跳转 href="javascript:void(0)"
2、其他的在onclick方法中进行
Peter_Zhu

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 : :

// event 为你的监听onclick回调函数中传递的参数
event.preventDefault ? event.preventDefault() : (event.returnValue = false);
曾经蜡笔没有小新

Après une longue attente, s'il vous plaît, mangez

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>

<body>
    <a href="" target="_blank">click</a>
    <script>
        function aTagCustomEvent(e) {
            var tag = e.target;

            //setTimeout模拟异步的ajax请求,时间间隔假设为1秒
            setTimeout(function() {
                tag.href = 'xxx';
                tag.onclick = function() {};
                tag.click();
                tag.onclick = aTagCustomEvent;
            }, 1000)
            return false;
        }

        //为页面中所有a标签设置onclick事件
        var aTags = [].slice.call(document.getElementsByTagName("A"));
        aTags.forEach(function(tag) {
            tag.onclick = aTagCustomEvent;
        })

    </script>
</body>

</html>
为情所困
<a href="javscript:;" onclick="doSomething(this);">

function doSomething(obj) {
    if($(obj).attr("href") === "javscript:;") {
        // ... ajax get and set url
        $(obj).attr("target", "_blank").trigger("click");
    }
}
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal