Skip to main content

Bug Tracker

Side navigation

#11708 closed bug (invalid)

Opened May 05, 2012 11:30PM UTC

Closed May 06, 2012 01:34AM UTC

Last modified May 08, 2012 01:43PM UTC

$.support.boxModel reports false for non-IE browsers

Reported by: ALLPRO Owned by:
Priority: undecided Milestone: None
Component: unfiled Version: 1.7.2
Keywords: Cc:
Blocked by: Blocking:
Description

The new method for setting $.boxModel & $.support.boxModel is:

jquery-1.7.2 - line 1455

jQuery.boxModel = support.boxModel = (document.compatMode === "CSS1Compat");

This returns false for ALL browsers when viewing a page without a doctype. That is incorrect as only IE browsers revert to the IE5 doctype in quirks-mode. So it seems the test should really be:

jQuery.boxModel = support.boxModel = (!jQuery.browser.msie || document.compatMode === "CSS1Compat");

The old method for testing boxModel (before 1.7.2) was to create a div with padding and then test its width. This was cumbersome but at least gave a correct result. The new test does not.

This is a serious bug as any code using $.support.boxModel to decide how to measure and size elements is now broken.

Attachments (0)
Change History (3)

Changed May 05, 2012 11:33PM UTC by ALLPRO comment:1

''Typo in ticket description - meant to say...''

That is incorrect as only IE browsers revert to the IE5 boxModel in quirks-mode.

Changed May 06, 2012 01:34AM UTC by rwaldron comment:2

resolution: → invalid
status: newclosed

jQuery doesn't support quirks-mode.

Changed May 08, 2012 01:43PM UTC by dmethvin comment:3

We talked about this at length during our weekly core dev meeting.

The problem is that use of the CSS box-model property **already** breaks any code that looks at jQuery.support.boxModel and expects an answer that applies to the whole page. Internally, jQuery can (and has) solved this issue, but we can't fix the external code.

Per your comment in #7986, we'll be clarifying in docs and release notes that the jQuery.support property is not intended as a public interface and may change with short notice. In addition, we're hard-wiring jQuery.support.boxModel = true with the idea that will cause less disruption to broken code in the meantime. But again, that code is broken due to its incorrect assumptions and we can't fix it.