getBoundingClientRect returns bogus values for SVG elements

RESOLVED DUPLICATE of bug 530985

Status

()

RESOLVED DUPLICATE of bug 530985
10 years ago
9 years ago

People

(Reporter: marcus, Unassigned)

Tracking

Firefox Tracking Flags

(Not tracked)

Details

Attachments

(1 attachment)

563 bytes, application/xml
Details
(Reporter)

Description

10 years ago
User-Agent:       Mozilla/5.0 (compatible; Konqueror/4.2; Linux) KHTML/4.2.0 (like Gecko)
Build Identifier: Mozilla/5.0 (X11; U; Linux x86_64; sv-SE; rv:1.9.0.6) Gecko/2009020407 Iceweasel/3.0.6 (Debian-3.0.6-1)

When calling getBoundingClientRect on an SVG element, the resulting box object indicates weird values. Usually its width and height are zero, even though the SVG element has positive width and height attributes.

In a more complex case I have also noticed that the returned coordinates may change unpredictably after the DOM is modified by adding some children to the SVG element (without changing the position or size of the SVG element itself). This happens both in Firefox 3.0 and Firefox 3.1 beta 2, but in the latter case the variation was much greater.


Reproducible: Always
(Reporter)

Comment 1

10 years ago
Created attachment 362906 [details]
test case

In FF 3.0 and 3.1b2, this produces:
  left=8, right=8, top=8, bottom=8
Please try a current trunk build.
(Reporter)

Comment 3

10 years ago
It may be noted that document.getBoxObjectFor(), in contrast, appears to return sensible values for SVG elements.
(Reporter)

Comment 4

10 years ago
>   left=8, right=8, top=8, bottom=8

Same result on Minefield: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2a1pre) Gecko/20090218 Minefield/3.2a1pre
getBoundingClientRect gets the area covered by SVG graphic shapes e.g. rect, circle, text etc. There are none here so the bounding box is and should be empty.
Status: UNCONFIRMED → RESOLVED
Last Resolved: 10 years ago
Resolution: --- → INVALID
That wasn't how I thought it really worked, so I looked at http://www.w3.org/TR/cssom-view/#the-getclientrects

I think the relevant sentence is "Return a (static) TextRectangleList object containing a list of (static) TextRectangle objects in content order describing the border boxes, *even if they are empty*, for the element on which it was invoked."

Emphasis mine. So the border box of the <svg> element happens to coincide with the edges of the viewport established by the <svg> in this case since it has no 'border' of 'padding' here. So it would seem to me that it should be returning a non-empty rect, no?
What do you think roc?
I'm not actually sure what the SVG bbox is in these testcases, off the top of my head. If our code disagrees with the cssom-view draft we should fix it, otherwise if you think the current draft is not what authors want, suggest a better way and we'll fix the draft and our code.
Okay. I don't have the time to look at this atm, so I'll reopen this to make sure I don't forget about it.
Status: RESOLVED → UNCONFIRMED
Resolution: INVALID → ---
Status: UNCONFIRMED → RESOLVED
Last Resolved: 10 years ago9 years ago
Resolution: --- → DUPLICATE
Duplicate of bug: 530985
You need to log in before you can comment on or make changes to this bug.