W3C home > Mailing lists > Public > www-svg@w3.org > April 2000

Re: Accessing the SVG DOM from HTML

From: Irv Kanode <ikanode@Adobe.COM>
Date: Thu, 6 Apr 2000 10:19:45 -0700
Message-Id: <p04310111b512772971ee@[]>
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


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.)
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>

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 +')');

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('stroke', '#0000FF');
	svgstyle.setProperty('stroke-width', '5');      

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');

Received on Thursday, 6 April 2000 13:21:16 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 22:53:49 UTC