suchen

Heim  >  Fragen und Antworten  >  Hauptteil

javascript – Ein Code über iscroll, ich hoffe, jemand kann ihn erklären

Der Zweck von if (el instanceof SVGElement) hier sollte ein Fähigkeitstest sein, aber ich habe festgestellt, dass für das eingehende Element el die Frage, ob SVGElement in seiner Prototypenkette vorhanden ist, nichts damit zu tun zu haben scheint, ob es getBoundingClientRect hat, oder? Auch wenn in der Prototypenkette eines Elements kein SVGElement vorhanden ist, verfügt es dennoch über die Methode getBoundingClientRect. Was bedeutet die Schreibweise hier?

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

Danke!

CRIMX

Fundiert und überzeugend!

世界只因有你世界只因有你2757 Tage vor674

Antworte allen(1)Ich werde antworten

  • 伊谢尔伦

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

    1. SVGElement - The properties offsetParent, offsetTop, offsetLeft, offsetWidth, and offsetHeight are deprecated in Chrome 48.

    2. The offsetLeft and offsetTop properties of SVG elements always returns 'undefined'.

    不对 HTMLElement 使用的原因可能是考虑到 getBoundingClientRect 更慢。

    Antwort
    0
  • StornierenAntwort