Hi John, there are actually only one problem with firefox and bounding-boxes:
* Firefox 1.5 and 2 had a bug where .getBBox() could not be called "onload". One had to do a slight delay, using setTimeout() with a few milliseconds. This is corrected in Firefox3 though. Other than that Firefox is correct when not returning bounding-boxes when display is set to none. The difference between display=none and visibility=hidden is that with visibility, the elements are part of the rendering tree, while with display=none they are not. For elements that aren't part of the rendering tree it is impossible to calculate bounding boxes. The same applies for newly created elements that haven't been appended to the DOM tree. Hope this helps, Andreas --- In svg-developers@yahoogroups.com, "johnbaronreid1972" <[EMAIL PROTECTED]> wrote: > > Hi, > > I can't get the following code to work in firefox. ASV6 seems to have > no problems. I imagine I've got something to do with namespaces wrong > but I can't figure out what it is. Under firefox I get the following > error when getBBox() is called: > > Error: uncaught exception: [Exception... "Component returned failure > code: 0x80004005 (NS_ERROR_FAILURE) [nsIDOMSVGLocatable.getBBox]" > nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: > file:///C:/Dev/MyProjects/Bio/svg/bbox_test.svg :: on_event :: line > 30" data: no] > > Any help would be much appreciated. I looked at > http://wiki.svg.org/GetBBox and tried to follow the advice there. > > Thanks, > John. > > > > The svg is: > > <?xml version="1.0" encoding="UTF-8" standalone="no" ?> > <svg > xmlns="http://www.w3.org/2000/svg" > baseProfile="full" > onload="init(evt);" > preserveAspectRatio="xMidYMid" > version="1.1" > viewBox="0 0 150 130" > xmlns:ev="http://www.w3.org/2001/xml-events" > xmlns:xlink="http://www.w3.org/1999/xlink"> > > <script type="text/javascript"><![CDATA[ > var svgNS = "http://www.w3.org/2000/svg"; > var doc = null; > var root = null; > > function init(evt) > { > doc = evt.target.ownerDocument; > root = doc.documentElement; > }; > > function on_event() > { > var hit_info = doc.getElementById('info'); > if( null == hit_info ) alert('Could not find: info'); > else { > var back = doc.getElementById('back'); > if (toggle_display(hit_info)) { > var outline = hit_info.getBBox(); > back.setAttribute('x', outline.x - 1.5); > back.setAttribute('y', outline.y - 1.5); > back.setAttribute('width', outline.width + 3); > back.setAttribute('height', outline.height + 3); > back.setAttribute('display', 'inline'); > } else { > back.setAttribute('display', 'none'); > } > } > } > > function toggle_display(el) > { > if ('none' == el.getAttribute('display')) { > el.setAttribute('display', 'inline'); > return true; > } else { > el.setAttribute('display', 'none'); > return false; > } > }; > ]]></script> > > <circle id="hit" cx="50" cy="50" fill="white" onclick="on_event()" > r="2" stroke="black" stroke-width="0.3"/> > <rect id="back" display="none" fill="lightgray" rx="0.3" > stroke="lightgray" stroke-width="0.3"/> > <rect id="info" display="none" fill='green' x='5' y='5' width='20' > height='10'/> > </svg> > ----- To unsubscribe send a message to: [EMAIL PROTECTED] -or- visit http://groups.yahoo.com/group/svg-developers and click "edit my membership" ---- Yahoo! Groups Links <*> To visit your group on the web, go to: http://groups.yahoo.com/group/svg-developers/ <*> Your email settings: Individual Email | Traditional <*> To change settings online go to: http://groups.yahoo.com/group/svg-developers/join (Yahoo! ID required) <*> To change settings via email: mailto:[EMAIL PROTECTED] mailto:[EMAIL PROTECTED] <*> To unsubscribe from this group, send an email to: [EMAIL PROTECTED] <*> Your use of Yahoo! Groups is subject to: http://docs.yahoo.com/info/terms/