搜尋

首頁  >  問答  >  主體

javascript - 關於iscroll的一段程式碼,希望有人解釋

這裡的if (el instanceof SVGElement)用意應該是一個能力檢測,但是我發現傳入的元素el,他的原型鏈上是否有SVGElement和它是否具有getBoundingClientRect好像並沒有什麼關係吧?即使一個元素的原型鏈上沒有SVGElement,它還是有getBoundingClientRect方法的,那這裡的寫法到底是什麼意思呢?

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

感謝!

CRIMX

#有理有據,令人信服!

世界只因有你世界只因有你2757 天前675

全部回覆(1)我來回復

  • 伊谢尔伦

    伊谢尔伦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 更慢。

    回覆
    0
  • 取消回覆