javascript - Un morceau de code sur iscroll, j'espère que quelqu'un pourra l'expliquer
世界只因有你
世界只因有你 2017-05-16 13:34:55
0
1
666

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 !

世界只因有你
世界只因有你

répondre à tous(1)
伊谢尔伦
  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.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal