Tujuan if (el instanceof SVGElement)
di sini mestilah ujian keupayaan, tetapi saya mendapati bahawa untuk elemen masuk el, sama ada terdapat SVGElement pada rantai prototaipnya nampaknya tidak ada kaitan dengan sama ada ia mempunyai getBoundingClientRect, bukan? Walaupun tiada SVGElement dalam rantaian prototaip sesuatu elemen, ia masih mempunyai kaedah getBoundingClientRect Jadi apakah maksud penulisan di sini?
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
};
}
};
Terima kasih!
CRIMX
berasas dan meyakinkan!
SVGElement - Sifat offsetParent, offsetTop, offsetLeft, offsetWidth dan offsetHeight ditamatkan dalam Chrome 48.
Sifat offsetLeft dan offsetTop elemen SVG sentiasa mengembalikan 'tidak ditentukan'.
tidak digunakan untuk HTMLElement mungkin disebabkan oleh fakta bahawa
getBoundingClientRect
lebih perlahan.