Okay, I have settled on <embed>. Thanks for the infomation.
Aaron ----- Original Message ----- From: ddailey To: svg-developers@yahoogroups.com Sent: Thursday, January 25, 2007 1:05 AM Subject: Re: [svg-developers] embed .v. object .v. frames .v. iframes -- [was SVG in XHTML file] Aaron Gray wrote: >This brings up the issue of embed .v. object .v. frames .v. iframes I would appreciate some pointers and advice here. I'll go ahead and make a stab at an answer. If I misstate or neglect anything, I'll hope others will jump in and correct me. Right now, the generally recommended way of doing SVG within HTML in existing web browsers seems to be <embed>. It works and supports SVG--HTML (bidirectional) scripting (w JavaScript). This works fine, from my experience, with Opera 9, Firefox 1.5+ and IE/ASV3.03. I can't speak for Safari which is probably one of the top 4 when it comes to SVG support in the browser. The problem is that <embed> is not standards compliant. <embed> seems to have been a sort of historic placeholder for <stuffThatTheBrowserDoesn'tReallyUnderstandWithoutOutsideHelp/> and has been inconsistently implemented for different types of content (different attributes, different purposes, etc.) all depending on who's plugin we're using. The W3C mechanism for importing non-HTML content into HTML documents is the <object> tag. Unfortunately (as Martin Honnen recently reminded me -- I knew I had read that once upon a time and then proceeded to forget), Adobe discovered a security problem with <object> in its 3.03 and disabled scripting through it (at least when done across domains). (http://www.adobe.com/svg/viewer/install/) . I've seen some advice that it is possible to get a document to validate properly with some tricks, using <object><embed/></object>, but I for one have not been able to pull that off and still do cross-DOM scripting. Perhaps somebody has an example? <object> works quite nicely and simply in FF and Opera, though. In some experiments I did with embed object frames and iframes, (see for example http://srufaculty.sru.edu/david.dailey/svg/createSVGelementfromHTML.html) I had some terrible troubles reading the SVG DOM if it was inside a frame or an iframe. Eventually, I was able to solve that problem (see http://srufaculty.sru.edu/david.dailey/svg/frameSVG.html.) with a peculiar technique -- in the <svg> tag I placed onload="top.receive(document)" -- that is, the SVG document sends its own document as a parameter to an HTML function, thence allowing cross-DOM scripting. A bit kludgy for my taste, but it gives script functionality to both iframes and frames, and that's what I was after. Fishing for the SVG DOM inside a frame or an iframe gave me security blocks at least in IE. Instead I let the fish come to the hook. On other fronts, a) <image src="doc.svg"> is likely not ever to support scripting, even once individual browsers come to support that file type. b) the inline approach to SVG has been experimented with a good deal and is likely to become much more convenient in future browsers (right now IE seems to be the obstacle). The link I mentioned earlier http://wiki.svg.org/Inline_SVG seems as consise and accurate as on this subject as any, though I seem to recall that Andreas Neumann had some pretty extensive stuff on this at his wonderful http://www.carto.net/papers/svg/samples/ site -- I can't seem to locate it quickly though. c) there is a <foreignObject> tag in SVG1.1 (see http://www.w3.org/TR/SVG/extend.html#ForeignObjectElement) . It appears to have the purpose of allowing the embedding of XHTML (and other XML content) directly into SVG, I suppose somewhat like Microsoft XML data islands in HTML. I haven't seen any working demos of it, and the example code in the W3C specs is something I've not been able to make work in any browser (I'm hoping somebody can set me straight here.) d) cross DOM stuff is a major focus of many of the emphases of at least a dozen major projects at the W3C (it seems to this outsider). So as soon as the browsers all learn to work and play nicely together, the playground will become a very fun place with the ability to wrap SVG into alternative XML's and vice versa using XSLT and so forth. Opera and Firefox already support XPATH -- if IE did, then we could probably shrink the size of our DOM code by 50%. That means we could write 200K programs for our fat clients instead of just 100K programs nowadays. I don't know, does anybody pass more than 100K of script into the browser at present? Seems like you'd have to get into incremental loads if you did. While I'm at it, does anyone know if there any W3C specs for metalanguages that might choreograph incremental loading of software into the browser? It would be nice to be able to do that without having to look at the browser's source code: a colleague asked me today about sort of pre-interpretation parsing of ECAScript and I confessed to knowing nothing about it. I'm digressing. (folks may have come to expect that from me by now) cheers, David [Non-text portions of this message have been removed] ------------------------------------------------------------------------------ No virus found in this incoming message. Checked by AVG Free Edition. Version: 7.1.410 / Virus Database: 268.17.8/649 - Release Date: 23/01/2007 [Non-text portions of this message have been removed] ----- 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/