I'm working on a site that requires some overlapping html tables, and one of the issues is making sure that neither overlaps the rest of the site content when growth is unpredictable.
I found a script that accomplishes this task
http://www.shauninman.com/archive/20...nline_absolute
And its quite good actually, the problem is Opera 9+ doesn't seem to want to participate and gives this JavaScript debug error:
The code in question is... and I'll bold the linesCode:JavaScript - file://localhost/Users/Jeff/Desktop/si-clear-children-1.0/clear.html Inline script thread Error: name: TypeError message: Statement on line 65: Could not convert undefined or null to object Backtrace: Line 65 of linked script file://localhost/Users/Jeff/Desktop/si-clear-children-1.0/si-clear-children.js if (! elem.className.match(/\bclear_children\b/)) Line 47 of linked script file://localhost/Users/Jeff/Desktop/si-clear-children-1.0/si-clear-children.js this.clear(); Line 89 of linked script file://localhost/Users/Jeff/Desktop/si-clear-children-1.0/si-clear-children.js SI.ClearChildren.initialize();
IE7, Safari, and Mozilla all work well, but Opera is giving a pain but I'd rather not have to just use a different stylesheet for Opera as a workaround.Code:/*-------------------------------------------------------------------------------- SI.ClearChildren v1.0 Instructions for use: 0. Include the following rules in your CSS (IE Win 5 requires `clear_children` to be display: inline; you can use the * html hack--just be sure to hide from IE Mac): .clear_children,.cc_tallest { position: relative; } .cc_tallest:after { content: ''; } 1. Layout your elements using absolute positioning relative to a container with a class of `clear_children` which contains only the absolutely positioned elements (no other inline elements). 2. This causes the containing element to collapse. 3. Decide which contained element will be the deepest on the most occasions and assign a class of `cc_tallest`. This will cause the containing element to expand to the height of this element. 4. Include this file. ---------------------------------------------------------------------------------*/ if (!SI) { var SI = new Object(); }; SI.ClearChildren = { control : null, watchInterval : 50, height : 0, initialize : function() { // IE Mac chokes on this (width and height assignments in particular). Go fish. if (document.createElement && !(document.all && !window.print)) { var c = document.createElement('div'), s = c.style; s.position = 'fixed'; s.top = '0'; s.visibility = 'hidden'; s.width = '1.em'; s.height = '1.em'; this.control = document.body.appendChild(c); this.height = 0; window.setInterval('SI.ClearChildren.monitor()', this.watchInterval); }; this.clear(); //49 }, monitor : function() { var o = this.height; this.height = this.control.offsetHeight; if (o != this.height) { this.clear(); }; }, clear : function() { if (!document.getElementsByTagName && !document.all) { return; } var elems = (document.all) ? document.all : document.getElementsByTagName('*'); for (var i = elems.length-1; i >= 0; i--) { var elem = elems[i]; if (!elem.className.match(/\bclear_children\b/)) { continue; }; //65 var container = elem; var tallest; var maxHeight = 0; for (var j = 0; j < container.childNodes.length; j++) { var contained = container.childNodes[j]; if (contained.nodeType == 1) { if (contained.offsetHeight > maxHeight) { maxHeight = contained.offsetHeight; tallest = contained; }; contained.className = contained.className.replace(/\bcc_tallest\b/, ''); }; }; // Add to the front of the existing classes to appease IE Mac. Save me Jeebus. tallest.className = 'cc_tallest' + ((tallest.className == '') ? '' : ' ' + tallest.className); }; } }; // Just do it. SI.ClearChildren.initialize(); //89
You can download more examples with the code pack
http://www.shauninman.com/assets/exa...ildren-1.0.zip
And none seem to work in Opera.
Anyone know what might be the issue?









Bookmarks