Side navigation
#5446 closed bug (fixed)
Opened November 03, 2009 10:12PM UTC
Closed November 07, 2009 02:56PM UTC
css("font-size") not returning correct value for elements in iframe
Reported by: | bgrins | Owned by: | |
---|---|---|---|
Priority: | major | Milestone: | 1.4 |
Component: | core | Version: | 1.3.2 |
Keywords: | iframe getcomputedstyle css | Cc: | |
Blocked by: | Blocking: |
Description
The code seems to use a cached defaultView that is document.defaultView. Inside the curCSS function it should set defaultView = elem.ownerDocument.defaultView.
I have attached a patch that fixes the problem - let me know if you need anything else.
Here is a simple test case:
index.html:
<html> <head> <script type='text/javascript' src='jquery-1.3.2.js'></script> <script type='text/javascript'> function testSize() { var doc = $("#iframe").contents()[0]; var $h1 = $(doc.body).find("h1:not(.big)"); var $h1Big = $(doc.body).find("h1.big"); alert("Should not be the same: " + $h1.css("font-size") + " == " + $h1Big.css("font-size")); } </script> </head> <body> <iframe id='iframe' onload='testSize()' src='index2.html'></iframe> </body> </html>
index2.html:
<html> <head> <style type='text/css'> .big { font-size: 1.2em; } </style> </head> <body> <h1>Normal Heading</h1> <h1 class='big'>Big Heading</h1> </body> </html>
Thanks!
Attachments (1)
Change History (2)
Changed November 03, 2009 10:20PM UTC by comment:1
Changed November 07, 2009 02:56PM UTC by comment:2
component: | unfilled → core |
---|---|
resolution: | → fixed |
status: | new → closed |
I think you made a mistake with your patch - you define the defaultView but then never reference it any where.
The one case where getComputedStyle is used it already accesses the correct one on the document:
var computedStyle = elem.ownerDocument.defaultView.getComputedStyle( elem, null )
It looks like you're doing this patch against an old version of jQuery - so, incidentally, this will be fixed in jQuery 1.4!
Also, I forgot to mention that this is an error in Firefox. I am using FF 3.5.4 but I am certain that it is an error in all versions of that browser. It seems to currently work in Safari, Chrome, and Internet Explorer.
I have ran into a few jQuery bugs that have to do with not using the ownerDocument. I will document them and submit patches for them all sometime soon.