Closed Bug 132863 Opened 23 years ago Closed 23 years ago

Can't resize framesets

Categories

(Core :: DOM: Core & HTML, defect)

x86
All
defect
Not set
normal

Tracking

()

RESOLVED FIXED

People

(Reporter: n-baxley, Assigned: jst)

References

()

Details

Attachments

(1 file)

You can't change the rows and cols property of a given frameset. The given url is an example that should change the size of a frameset after telling you which frameset you are altering. It is working on the proper frameset since the alert is using the frameset objects ID. This example works fine in IE 5.5.
Browser, not engine ---> DOM Level 0. Here is the key function involved: <html><head><title>Untitled</title> <script language="JavaScript1.2"> function setFrameRows(framesetID, newRowsString) { //alert(framesetID + ":" + newRowsString); frameset = top.document.getElementById(framesetID) alert("Trying to resize " + frameset.id); frameset.rows = newRowsString; } </script> </head> <body> <a href="#Shrink" onclick="setFrameRows('FramesetLeft', '*, 50');">Minimize</a> <a href="#Shrink" onclick="setFrameRows('FramesetLeft', '50%, *');">Restore</a> </body></html>
Assignee: rogerl → jst
Component: JavaScript Engine → DOM Level 0
QA Contact: pschwartau → desale
Confirming reported behavior with Mozilla trunk binary 20020317xx. Nothing happens when you click the links. No errors in JS Console. Note: this testcase also does not work in NN4.7. Is this IE-only syntax?
Status: UNCONFIRMED → NEW
Ever confirmed: true
The DOM Level 1 does define a rows and cols attribute on the HTMLFrameSetElement interface. See http://www.w3.org/TR/REC-DOM-Level-1/level-one-html.html#ID-43829095. It doesn't say if it is writeable or not though. I assume that the addressing on the Frameset element is correct since you can pull the ID from it.
cc'ing Boris, jkeiser, because I think they'd be interested in this -
I've updated the above test page (http://www.baxleys.org/Mozilla/Frames/resizeframeset.html) to show the rows value before and after the change. It appears to be changing the value, but the screen is not being updated (redrawn?). Here is the function as it stands now: function setFrameRows(framesetID, newRowsString) { frameset = top.document.getElementById(framesetID) alert("Original frameset rows value for " + frameset.id + "=" + frameset.rows); frameset.rows = newRowsString; alert("New frameset rows value for " + frameset.id + "=" + frameset.rows); }
Yes, in the code, we do not do anything when you change the rows or cols attributes. We don't want to do a reframe because currently, frames will end up reloading their document on reframe (this is true after jst's landing as well, I believe).
OS: Windows 2000 → All
see also bug 48422, bug 63980, and bug 69347. I can't really figure out whether there's a dup in there, but I thought it might be interesting.
hmm, methinks I may be wrong, and someone else is catching the cols/rows change.
nsHTMLFrameSetElement.cpp 204 if ((aAttribute == nsHTMLAtoms::rows) || 205 (aAttribute == nsHTMLAtoms::cols)) { 206 aHint = NS_STYLE_HINT_FRAMECHANGE; 207 }
Depends on: 48422
Fixed by bug 48422 being fixed.
Status: NEW → RESOLVED
Closed: 23 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: