use1.setAttributeNS(xref,"xlink:href", "#mySymbol")

is incorrect. The correct form would be

use1.setAttributeNS(xref,"href", "#mySymbol")

Best regards

Robert.

--- In svg-developers@yahoogroups.com, "Francis Hemsher" <fhemsher@...> wrote:
>
> 
> 
> --- In svg-developers@yahoogroups.com, "Francis Hemsher" <fhemsher@> wrote:
> >
> > 
> >  Nick de Voil wrote:
> > >
> > > As part of a web-based drawing and diagramming application, I would like 
> > > to be able to create <use> elements on the fly, referring to <symbol> 
> > > elements which would themselves also ideally be defined on the fly.
> > > 
> > > So far, it seems that, if I define the symbols in a static SVG file, 
> > > Opera can then instantiate the <use> elements exactly as I would hope 
> > > using JavaScript, but Firefox, Chrome and Safari cannot. If I try to 
> > > define the symbols themselves using script, even Opera can't manage it.
> > > 
> > > Can anyone either confirm that I'm trying to push SVG further than it 
> > > will go, or conversely that these things can actually be done?
> > > 
> > > Thanks
> > > 
> > > Nick
> > >
> > 
> > Hi Nick,
> > Dynamically building SVG elements is a 'must have' within a browser.
> > I've tested IE9 with inline SVG and find it can dynamically build/update 
> > all svg elements.
> > e.g.
> >     //---namespace required to create inline svg elements----
> >     var NS="http://www.w3.org/2000/svg";
> >     var mySymbol=document.createElementNS(NS,"symbol");
> >     mySymbol.id="mySymbol"
> >         mySVG.appendChild(mySymbol)
> > I don't do much work in other browsers, but It would be a major oversight 
> > if they do not include dynamic SVG.
> > Regards,
> > Francis
> >
> 
> Below is the HTML5 file that demonstrates this feature:
> 
> <!DOCTYPE HTML>
> <html>
> <body>
> Inline SVG:<svg id=mySVG  width="300" height="300" >
> <rect x="0" y="0" width="300" height="300" fill="yellow"/>
> </svg>
> <button onClick='build()'>build</button>
> </body>
> <script>
> function build()
> {
>       //---namespace required to create inline svg elements----
>       var NS="http://www.w3.org/2000/svg";
>       var mySymbol=document.createElementNS(NS,"symbol");
>       mySymbol.id="mySymbol"
>       //--- elements created with their centers at 0,0---
>       var myRect=document.createElementNS(NS,"rect");
>       myRect.id="myRect"
>       myRect.setAttribute("fill","red")
>       myRect.setAttribute("x",-50)
>       myRect.setAttribute("y",-50)
>       myRect.setAttribute("width",100)
>       myRect.setAttribute("height",100)
>       mySymbol.appendChild(myRect)
> 
>       var myCircle=document.createElementNS(NS,"circle");
>       myCircle.id="myCircle1"
>       myCircle.setAttribute("fill","blue")
>       myCircle.setAttribute("cx",0)
>       myCircle.setAttribute("cy",0)
>       myCircle.setAttribute("r",50)
>       mySymbol.appendChild(myCircle)
> 
>       var myEllipse=document.createElementNS(NS,"ellipse");
>       myEllipse.id="myEllipse"
>       myEllipse.setAttribute("fill","lime")
>       myEllipse.setAttribute("cx",0)
>       myEllipse.setAttribute("cy",0)
>       myEllipse.setAttribute("rx",50)
>       myEllipse.setAttribute("ry",25)
>       mySymbol.appendChild(myEllipse)
> 
>       //---symbol shows elements below 0,0--
>       mySymbol.setAttribute("overflow","visible")
>       mySVG.appendChild(mySymbol)
> 
>       var xref="http://www.w3.org/1999/xlink";
>       var use1=document.createElementNS(NS,"use");
>       use1.setAttributeNS(xref,"xlink:href", "#mySymbol")
>       use1.setAttribute("x",60)
>       use1.setAttribute("y",60)
>       mySVG.appendChild(use1)
> 
>       var use2=document.createElementNS(NS,"use");
>       use2.setAttributeNS(xref,"xlink:href", "#mySymbol")
>       use2.setAttribute("x",140)
>       use2.setAttribute("y",140)
>       mySVG.appendChild(use2)
> 
>       var use3=document.createElementNS(NS,"use");
>       use3.setAttributeNS(xref,"xlink:href", "#mySymbol")
>       use3.setAttribute("x",220)
>       use3.setAttribute("y",220)
>       mySVG.appendChild(use3)
> }
> </script>
> </html>
>




------------------------------------

-----
To unsubscribe send a message to: svg-developers-unsubscr...@yahoogroups.com
-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:
    svg-developers-dig...@yahoogroups.com 
    svg-developers-fullfeatu...@yahoogroups.com

<*> To unsubscribe from this group, send an email to:
    svg-developers-unsubscr...@yahoogroups.com

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/

Reply via email to