recherche

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

javascript - Un morceau de code sur iscroll, j'espère que quelqu'un pourra l'expliquer

Le but de if (el instanceof SVGElement) ici devrait être un test de capacité, mais j'ai trouvé que pour l'élément entrant el, le fait qu'il y ait SVGElement sur sa chaîne de prototypes ne semble pas avoir quelque chose à voir avec le fait qu'il ait getBoundingClientRect, n'est-ce pas ? Même s'il n'y a pas de SVGElement dans la chaîne de prototypes d'un élément, il possède toujours la méthode getBoundingClientRect. Alors, que signifie l'écriture ici ?

    me.getRect = function(el) {

        if (el instanceof SVGElement) {
            var rect = el.getBoundingClientRect();
            return {
                top : rect.top,
                left : rect.left,
                width : rect.width,
                height : rect.height
            };
        } else {
            
            return {
                top : el.offsetTop,
                left : el.offsetLeft,
                width : el.offsetWidth,
                height : el.offsetHeight
            };
        }
    };

Merci !

CRIMX

Bien fondé et convaincant !

世界只因有你世界只因有你2809 Il y a quelques jours706

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

  • 伊谢尔伦

    伊谢尔伦2017-05-16 13:36:55

    1. SVGElement - Les propriétés offsetParent, offsetTop, offsetLeft, offsetWidth et offsetHeight sont obsolètes dans Chrome 48.

    2. Les propriétés offsetLeft et offsetTop des éléments SVG renvoient toujours « non défini ».

    La raison pour laquelle vous n'utilisez pas HTMLElement peut être due au fait que getBoundingClientRect est plus lent.

    répondre
    0
  • Annulerrépondre