- From: Irv Kanode <ikanode@Adobe.COM>
- Date: Thu, 6 Apr 2000 10:19:45 -0700
- To: "www-svg@w3.org" <www-svg@w3.org>
>I am using Adobe's SVG plug-in to embed SVG documents within HTML using the ><embed> tag. I would like to use javascript in the outer HTML page to access >and manipulate the DOM of the SVG document. Is this possible with the >current implementation of Adobe's plug-in? If so are there any examples of >this? >David David, There's a complete example on the Adobe SVG Preview site in the Transformations tutorial. Here's an overview: Using JavaScript on an HTML page to interact with a SVG graphic 1. There are several ways to get a reference to the desired SVG graphic on the page. a. Get a reference to the first SVGDocument on the page var svgdoc = document.embeds[0].getSVGDocument(); (embeds[0] is the first plugin, and embeds[1] is the second plugin, etc.) or b. Get a reference to the SVG graphic named "SVGtoScale" var svgdoc = document.embeds["SVGtoScale"].getSVGDocument(); The embeded plugin must be named on the HTML page as in: <EMBED SRC="Scale2.svg" WIDTH="250" HEIGHT="200" NAME="SVGtoScale"> 2. Once you have a reference to svgdoc, get a reference to the desired element in the SVG graphic. In this case "AreaToMove" var svgobj = svgdoc.getElementById("AreaToMove"); Snippet from the SVG file: <g id ="AreaToMove" > <rect x="20" y="20" width="80" height="80" style="fill:yellow; stroke:red; stroke-width:1px" /> <text x="30" y="30" style="font-size:10">Move this area.</text> </g> 3. Get the entries from the Form field(s) on the HTML page. var xPixels = document.formName.fieldNameX.value; var yPixels = document.formName.fieldNameY.value; 4. Apply a transform (for example) to the element named "AreaToMove" svgobj.setAttribute('transform','translate(' + xPixels + " " + yPixels +')'); ------------------------------------------------------------ Examples of changing attributes using JavaScript: var svgdoc = document.embeds[0].getSVGDocument(); var svgobj = svgdoc.getElementById("AreaToChange"); svgobj.setAttribute('transform','scale(' + scaleAmount +')'); svgobj.setAttribute('transform','translate(' + xPixels +" "+ yPixels +')'); etc. Examples of changing properties from external JavaScript var svgdoc = document.embeds[0].getSVGDocument(); var svgobj = svgdoc.getElementById("AreaToChange"); var svgstyle = svgobj.getStyle(); svgstyle.setProperty ('fill-opacity', 1); svgstyle.setProperty('fill','#33FF66'); svgstyle.setProperty('stroke', '#0000FF'); svgstyle.setProperty('stroke-width', '5'); etc. Examples of changing text and its properties from external Javascript var svgdoc = document.embeds[0].getSVGDocument(); var svgobj = svgdoc.getElementById("AreaToChange"); var text_element = svgdoc.getElementById('TextElement'); var first_child = text_element.getFirstChild(); first_child.setData ("The New Text"); var svgstyle = text_element.getStyle(); svgstyle.setProperty('fill', '#33FF66'); svgstyle.setProperty(font-family, 'Verdana'); svgstyle.setProperty(font-size, '24'); etc. Irv
Received on Thursday, 6 April 2000 13:21:16 UTC