Maison  >  Questions et réponses  >  le corps du texte

javascript - Comment modifier le mécanisme de déclenchement par défaut de l'attribut a tag du navigateur?

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

伊谢尔伦伊谢尔伦2641 Il y a quelques jours1769

répondre à tous(9)je répondrai

  • 过去多啦不再A梦

    过去多啦不再A梦2017-07-01 09:14:15

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

    e.preventDefault()

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

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

    });
    })

    répondre
    0
  • 淡淡烟草味

    淡淡烟草味2017-07-01 09:14:15

    $('a').click(function() {
      var link = this
      $.get(xx, function() {
        location.href = link.href 
      });
      return false // 阻止先不跳转
    })

    répondre
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-07-01 09:14:15

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

    //todo。。。。。
    
    window.location.href = 'url'

    }

    répondre
    0
  • 怪我咯

    怪我咯2017-07-01 09:14:15

    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

    .

    répondre
    0
  • typecho

    typecho2017-07-01 09:14:15

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

    répondre
    0
  • 欧阳克

    欧阳克2017-07-01 09:14:15

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

    répondre
    0
  • 天蓬老师

    天蓬老师2017-07-01 09:14:15

    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);

    répondre
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-07-01 09:14:15

    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>
    

    répondre
    0
  • 为情所困

    为情所困2017-07-01 09:14:15

    <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");
        }
    }

    répondre
    0
  • Annulerrépondre