Re: [svg-developers] Re: use tag and unique IDs
Domenico, First, thanks for pointing me to the resizable text wrap. It was just what I needed. With regards to the use tag, I was hoping I could reuse a tspan element and modify the text for each use tag, but once I change tspan1, all the references would reflect it. So using a tspan in the defs and reusing over and over for separate text boxes is not possible. Sean domenico_strazzullo wrote: Sean, Of course it's possible. You need to target the document and not just the element that makes the call: function edit2(evt){ // var objet=evt.target; var objet = evt.target.ownerDocument; var tspan1 = objet.getElementById(tspan1); //Works tspan1.firstChild.data = NewText; } It works in IE7 and FF. I'm not sure the last line is what you want to do, just a guess, but tspan1 returns an object so you can do anything with it. Domenico --- In svg-developers@yahoogroups.com, Jeff Rafter [EMAIL PROTECTED] wrote: Sean, It can be done, it just has to be done differently in each browser. Try this code inside of your event: var target = evt.target; var use = null if (target == null) return; if (target.correspondingUseElement) use = target.correspondingUseElement; This is a sure way to get the use element from the target (in case it is not correctly returned as an SVGElementInstance). The correspondingElement property is not itself reliable (because of inconsitent implementation interpretations). Once you have that you should be able to access use.instanceRoot, use.animatedInstanceRoot (less reliable) From that you should get a reliable SVGElementInstance on which you can use the correspondingElement property. Additionally you should be able to use read only DOM properties. See http://www.w3.org/TR/SVG/struct.html#InterfaceSVGElementInstance Also, once you have the use element, you can simply follow the link specified in the URI reference or simply lookup the referenced element by the specified ID. Cheers, Jeff Rafter Sean wrote: I can get the use tag, I want to be able to navigate the use tag. I have the use referencing a g tag with several elements under the g tag. I want to be able to navigate those elements. I'm coming to the conclusion that it can't be done. Sean Peter Kalev wrote: Why don't you wrap the use element in a g id=, search for the g and then look for the use inside the g... Works fine for me... Peter Kalev Senior Developer, SWF, LLC -Original Message- From: Sean [mailto:[EMAIL PROTECTED] Sent: Wednesday, February 08, 2006 11:21 AM To: svg-developers@yahoogroups.com Subject: Re: [svg-developers] Re: use tag and unique IDs I should say navigate the use element. I realize that it is read only, but I can't figure out how to do that. Thanks. Sean wrote: Does any one have examples of using SVGUseElement SVGElementInstance? Thanks. Sean Sean wrote: Hi Alastair, Thanks for the input. I figured as much with the id, but getElementByName didn't work either. I was hoping that something would work. I tried the childNodes and firstChild, but nothing works. objet.childNodes.length returns 0, which appears to mean that the child nodes under the use tag don't get recognized, rendering the approaches below useless, no pun intended. My failure to get the use tags to work would mean the difference between using 35,000 tags and 210,000 tags. I have quite the incentive to make it work. Thanks. var objet=evt.target; alert(objet.childNodes.length); var child = objet.firstChild; i=0; while(child != null){ childSibling = child.nextSibling; alert(child.nodeType); child = childSibling; } Sean Alastair Fettes wrote: You've made a fundamental mistake. 1. The idea behind a defs section is to resuse (have multiple copies) of an definition. 2. The idea of an ID attribute is to only have one attribute with a specific value document wide (see xs:ID type - http://www.w3.org/TR/xmlschema-2/#ID). So therefore you have a fundamental mistake. The defs section and the id invalidate each other. The only thing you could (possibly) do would be to getElementById( useFrame2 ).childNodes.foo.bar to get the tspan. Maybe, i don't guarantee it. Alastair
Re: [svg-developers] Re: use tag and unique IDs
Jeff, As of now, I realize I cannot use the use tags the way I thought I could, but I'm still curios. Either I'm missing something or I don't get what is going on. If I understand correctly, use = target.correspondingUseElement; should give me the use tag I clicked on. Which means use.getAttribute(id); should return the id of the use tag. I get id is null. Should I be getting null or the id? Thanks. Sean Jeff Rafter wrote: Sean, It can be done, it just has to be done differently in each browser. Try this code inside of your event: var target = evt.target; var use = null if (target == null) return; if (target.correspondingUseElement) use = target.correspondingUseElement; This is a sure way to get the use element from the target (in case it is not correctly returned as an SVGElementInstance). The correspondingElement property is not itself reliable (because of inconsitent implementation interpretations). Once you have that you should be able to access use.instanceRoot, use.animatedInstanceRoot (less reliable) From that you should get a reliable SVGElementInstance on which you can use the correspondingElement property. Additionally you should be able to use read only DOM properties. See http://www.w3.org/TR/SVG/struct.html#InterfaceSVGElementInstance Also, once you have the use element, you can simply follow the link specified in the URI reference or simply lookup the referenced element by the specified ID. Cheers, Jeff Rafter Sean wrote: I can get the use tag, I want to be able to navigate the use tag. I have the use referencing a g tag with several elements under the g tag. I want to be able to navigate those elements. I'm coming to the conclusion that it can't be done. Sean Peter Kalev wrote: Why don't you wrap the use element in a g id=, search for the g and then look for the use inside the g... Works fine for me... Peter Kalev Senior Developer, SWF, LLC -Original Message- From: Sean [mailto:[EMAIL PROTECTED] Sent: Wednesday, February 08, 2006 11:21 AM To: svg-developers@yahoogroups.com Subject: Re: [svg-developers] Re: use tag and unique IDs I should say navigate the use element. I realize that it is read only, but I can't figure out how to do that. Thanks. Sean wrote: Does any one have examples of using SVGUseElement SVGElementInstance? Thanks. Sean Sean wrote: Hi Alastair, Thanks for the input. I figured as much with the id, but getElementByName didn't work either. I was hoping that something would work. I tried the childNodes and firstChild, but nothing works. objet.childNodes.length returns 0, which appears to mean that the child nodes under the use tag don't get recognized, rendering the approaches below useless, no pun intended. My failure to get the use tags to work would mean the difference between using 35,000 tags and 210,000 tags. I have quite the incentive to make it work. Thanks. var objet=evt.target; alert(objet.childNodes.length); var child = objet.firstChild; i=0; while(child != null){ childSibling = child.nextSibling; alert(child.nodeType); child = childSibling; } Sean Alastair Fettes wrote: You've made a fundamental mistake. 1. The idea behind a defs section is to resuse (have multiple copies) of an definition. 2. The idea of an ID attribute is to only have one attribute with a specific value document wide (see xs:ID type - http://www.w3.org/TR/xmlschema-2/#ID). So therefore you have a fundamental mistake. The defs section and the id invalidate each other. The only thing you could (possibly) do would be to getElementById( useFrame2 ).childNodes.foo.bar to get the tspan. Maybe, i don't guarantee it. Alastair --- In svg-developers@yahoogroups.com, Sean [EMAIL PROTECTED] wrote: I would like to use the use tags to save much text size as below. Problem is grabbing and editing data with onclick events. The id for my tspan would always be the same, but they would be used in different use tags with unique IDs. Is there a way to isolate say the tspan1 under useFrame2? SVG defs g id=textFrame cat=textBox text cat=textBox font-size=14 font=sans-serif tspan id=tspan1 cat=textBoxText/tspan/text texttspan visibility=hidden id=tspan2/tspan/text /g /defs use id=useFrame onclick=edit2(evt); xlink:href=#textFrame transform=translate(10,25)/ use id=useFrame2 onclick=edit2(evt); xlink:href=#textFrame transform=translate(10,50)/ JS function edit2(evt){ var objet
Re: [svg-developers] Re: use tag and unique IDs
Hi Alastair, Thanks for the input. I figured as much with the id, but getElementByName didn't work either. I was hoping that something would work. I tried the childNodes and firstChild, but nothing works. objet.childNodes.length returns 0, which appears to mean that the child nodes under the use tag don't get recognized, rendering the approaches below useless, no pun intended. My failure to get the use tags to work would mean the difference between using 35,000 tags and 210,000 tags. I have quite the incentive to make it work. Thanks. var objet=evt.target; alert(objet.childNodes.length); var child = objet.firstChild; i=0; while(child != null){ childSibling = child.nextSibling; alert(child.nodeType); child = childSibling; } Sean Alastair Fettes wrote: You've made a fundamental mistake. 1. The idea behind a defs section is to resuse (have multiple copies) of an definition. 2. The idea of an ID attribute is to only have one attribute with a specific value document wide (see xs:ID type - http://www.w3.org/TR/xmlschema-2/#ID). So therefore you have a fundamental mistake. The defs section and the id invalidate each other. The only thing you could (possibly) do would be to getElementById( useFrame2 ).childNodes.foo.bar to get the tspan. Maybe, i don't guarantee it. Alastair --- In svg-developers@yahoogroups.com, Sean [EMAIL PROTECTED] wrote: I would like to use the use tags to save much text size as below. Problem is grabbing and editing data with onclick events. The id for my tspan would always be the same, but they would be used in different use tags with unique IDs. Is there a way to isolate say the tspan1 under useFrame2? SVG defs g id=textFrame cat=textBox text cat=textBox font-size=14 font=sans-serif tspan id=tspan1 cat=textBoxText/tspan/text texttspan visibility=hidden id=tspan2/tspan/text /g /defs use id=useFrame onclick=edit2(evt); xlink:href=#textFrame transform=translate(10,25)/ use id=useFrame2 onclick=edit2(evt); xlink:href=#textFrame transform=translate(10,50)/ JS function edit2(evt){ var objet=evt.target; var tspan1 = objet.getElementById(tspan1); //Doesn't work } Thanks! Sean -- I'd rather have a bottle in front of me, than a frontal lobotomy. -- Tom Waits - 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 -- I'd rather have a bottle in front of me, than a frontal lobotomy. -- Tom Waits - 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/ * 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/
Re: [svg-developers] Re: use tag and unique IDs
Does any one have examples of using SVGUseElement SVGElementInstance? Thanks. Sean Sean wrote: Hi Alastair, Thanks for the input. I figured as much with the id, but getElementByName didn't work either. I was hoping that something would work. I tried the childNodes and firstChild, but nothing works. objet.childNodes.length returns 0, which appears to mean that the child nodes under the use tag don't get recognized, rendering the approaches below useless, no pun intended. My failure to get the use tags to work would mean the difference between using 35,000 tags and 210,000 tags. I have quite the incentive to make it work. Thanks. var objet=evt.target; alert(objet.childNodes.length); var child = objet.firstChild; i=0; while(child != null){ childSibling = child.nextSibling; alert(child.nodeType); child = childSibling; } Sean Alastair Fettes wrote: You've made a fundamental mistake. 1. The idea behind a defs section is to resuse (have multiple copies) of an definition. 2. The idea of an ID attribute is to only have one attribute with a specific value document wide (see xs:ID type - http://www.w3.org/TR/xmlschema-2/#ID). So therefore you have a fundamental mistake. The defs section and the id invalidate each other. The only thing you could (possibly) do would be to getElementById( useFrame2 ).childNodes.foo.bar to get the tspan. Maybe, i don't guarantee it. Alastair --- In svg-developers@yahoogroups.com, Sean [EMAIL PROTECTED] wrote: I would like to use the use tags to save much text size as below. Problem is grabbing and editing data with onclick events. The id for my tspan would always be the same, but they would be used in different use tags with unique IDs. Is there a way to isolate say the tspan1 under useFrame2? SVG defs g id=textFrame cat=textBox text cat=textBox font-size=14 font=sans-serif tspan id=tspan1 cat=textBoxText/tspan/text texttspan visibility=hidden id=tspan2/tspan/text /g /defs use id=useFrame onclick=edit2(evt); xlink:href=#textFrame transform=translate(10,25)/ use id=useFrame2 onclick=edit2(evt); xlink:href=#textFrame transform=translate(10,50)/ JS function edit2(evt){ var objet=evt.target; var tspan1 = objet.getElementById(tspan1); //Doesn't work } Thanks! Sean -- I'd rather have a bottle in front of me, than a frontal lobotomy. -- Tom Waits - 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 -- I'd rather have a bottle in front of me, than a frontal lobotomy. -- Tom Waits - 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/ * 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/
Re: [svg-developers] Re: use tag and unique IDs
I should say navigate the use element. I realize that it is read only, but I can't figure out how to do that. Thanks. Sean wrote: Does any one have examples of using SVGUseElement SVGElementInstance? Thanks. Sean Sean wrote: Hi Alastair, Thanks for the input. I figured as much with the id, but getElementByName didn't work either. I was hoping that something would work. I tried the childNodes and firstChild, but nothing works. objet.childNodes.length returns 0, which appears to mean that the child nodes under the use tag don't get recognized, rendering the approaches below useless, no pun intended. My failure to get the use tags to work would mean the difference between using 35,000 tags and 210,000 tags. I have quite the incentive to make it work. Thanks. var objet=evt.target; alert(objet.childNodes.length); var child = objet.firstChild; i=0; while(child != null){ childSibling = child.nextSibling; alert(child.nodeType); child = childSibling; } Sean Alastair Fettes wrote: You've made a fundamental mistake. 1. The idea behind a defs section is to resuse (have multiple copies) of an definition. 2. The idea of an ID attribute is to only have one attribute with a specific value document wide (see xs:ID type - http://www.w3.org/TR/xmlschema-2/#ID). So therefore you have a fundamental mistake. The defs section and the id invalidate each other. The only thing you could (possibly) do would be to getElementById( useFrame2 ).childNodes.foo.bar to get the tspan. Maybe, i don't guarantee it. Alastair --- In svg-developers@yahoogroups.com, Sean [EMAIL PROTECTED] wrote: I would like to use the use tags to save much text size as below. Problem is grabbing and editing data with onclick events. The id for my tspan would always be the same, but they would be used in different use tags with unique IDs. Is there a way to isolate say the tspan1 under useFrame2? SVG defs g id=textFrame cat=textBox text cat=textBox font-size=14 font=sans-serif tspan id=tspan1 cat=textBoxText/tspan/text texttspan visibility=hidden id=tspan2/tspan/text /g /defs use id=useFrame onclick=edit2(evt); xlink:href=#textFrame transform=translate(10,25)/ use id=useFrame2 onclick=edit2(evt); xlink:href=#textFrame transform=translate(10,50)/ JS function edit2(evt){ var objet=evt.target; var tspan1 = objet.getElementById(tspan1); //Doesn't work } Thanks! Sean -- I'd rather have a bottle in front of me, than a frontal lobotomy. -- Tom Waits - 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 -- I'd rather have a bottle in front of me, than a frontal lobotomy. -- Tom Waits - 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/ * 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/
RE: [svg-developers] Re: use tag and unique IDs
Why don't you wrap the use element in a g id=, search for the g and then look for the use inside the g... Works fine for me... Peter Kalev Senior Developer, SWF, LLC -Original Message- From: Sean [mailto:[EMAIL PROTECTED] Sent: Wednesday, February 08, 2006 11:21 AM To: svg-developers@yahoogroups.com Subject: Re: [svg-developers] Re: use tag and unique IDs I should say navigate the use element. I realize that it is read only, but I can't figure out how to do that. Thanks. Sean wrote: Does any one have examples of using SVGUseElement SVGElementInstance? Thanks. Sean Sean wrote: Hi Alastair, Thanks for the input. I figured as much with the id, but getElementByName didn't work either. I was hoping that something would work. I tried the childNodes and firstChild, but nothing works. objet.childNodes.length returns 0, which appears to mean that the child nodes under the use tag don't get recognized, rendering the approaches below useless, no pun intended. My failure to get the use tags to work would mean the difference between using 35,000 tags and 210,000 tags. I have quite the incentive to make it work. Thanks. var objet=evt.target; alert(objet.childNodes.length); var child = objet.firstChild; i=0; while(child != null){ childSibling = child.nextSibling; alert(child.nodeType); child = childSibling; } Sean Alastair Fettes wrote: You've made a fundamental mistake. 1. The idea behind a defs section is to resuse (have multiple copies) of an definition. 2. The idea of an ID attribute is to only have one attribute with a specific value document wide (see xs:ID type - http://www.w3.org/TR/xmlschema-2/#ID). So therefore you have a fundamental mistake. The defs section and the id invalidate each other. The only thing you could (possibly) do would be to getElementById( useFrame2 ).childNodes.foo.bar to get the tspan. Maybe, i don't guarantee it. Alastair --- In svg-developers@yahoogroups.com, Sean [EMAIL PROTECTED] wrote: I would like to use the use tags to save much text size as below. Problem is grabbing and editing data with onclick events. The id for my tspan would always be the same, but they would be used in different use tags with unique IDs. Is there a way to isolate say the tspan1 under useFrame2? SVG defs g id=textFrame cat=textBox text cat=textBox font-size=14 font=sans-serif tspan id=tspan1 cat=textBoxText/tspan/text texttspan visibility=hidden id=tspan2/tspan/text /g /defs use id=useFrame onclick=edit2(evt); xlink:href=#textFrame transform=translate(10,25)/ use id=useFrame2 onclick=edit2(evt); xlink:href=#textFrame transform=translate(10,50)/ JS function edit2(evt){ var objet=evt.target; var tspan1 = objet.getElementById(tspan1); //Doesn't work } Thanks! Sean -- I'd rather have a bottle in front of me, than a frontal lobotomy. -- Tom Waits - 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 -- I'd rather have a bottle in front of me, than a frontal lobotomy. -- Tom Waits - 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 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/ * 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/
Re: [svg-developers] Re: use tag and unique IDs
I can get the use tag, I want to be able to navigate the use tag. I have the use referencing a g tag with several elements under the g tag. I want to be able to navigate those elements. I'm coming to the conclusion that it can't be done. Sean Peter Kalev wrote: Why don't you wrap the use element in a g id=, search for the g and then look for the use inside the g... Works fine for me... Peter Kalev Senior Developer, SWF, LLC -Original Message- From: Sean [mailto:[EMAIL PROTECTED] Sent: Wednesday, February 08, 2006 11:21 AM To: svg-developers@yahoogroups.com Subject: Re: [svg-developers] Re: use tag and unique IDs I should say navigate the use element. I realize that it is read only, but I can't figure out how to do that. Thanks. Sean wrote: Does any one have examples of using SVGUseElement SVGElementInstance? Thanks. Sean Sean wrote: Hi Alastair, Thanks for the input. I figured as much with the id, but getElementByName didn't work either. I was hoping that something would work. I tried the childNodes and firstChild, but nothing works. objet.childNodes.length returns 0, which appears to mean that the child nodes under the use tag don't get recognized, rendering the approaches below useless, no pun intended. My failure to get the use tags to work would mean the difference between using 35,000 tags and 210,000 tags. I have quite the incentive to make it work. Thanks. var objet=evt.target; alert(objet.childNodes.length); var child = objet.firstChild; i=0; while(child != null){ childSibling = child.nextSibling; alert(child.nodeType); child = childSibling; } Sean Alastair Fettes wrote: You've made a fundamental mistake. 1. The idea behind a defs section is to resuse (have multiple copies) of an definition. 2. The idea of an ID attribute is to only have one attribute with a specific value document wide (see xs:ID type - http://www.w3.org/TR/xmlschema-2/#ID). So therefore you have a fundamental mistake. The defs section and the id invalidate each other. The only thing you could (possibly) do would be to getElementById( useFrame2 ).childNodes.foo.bar to get the tspan. Maybe, i don't guarantee it. Alastair --- In svg-developers@yahoogroups.com, Sean [EMAIL PROTECTED] wrote: I would like to use the use tags to save much text size as below. Problem is grabbing and editing data with onclick events. The id for my tspan would always be the same, but they would be used in different use tags with unique IDs. Is there a way to isolate say the tspan1 under useFrame2? SVG defs g id=textFrame cat=textBox text cat=textBox font-size=14 font=sans-serif tspan id=tspan1 cat=textBoxText/tspan/text texttspan visibility=hidden id=tspan2/tspan/text /g /defs use id=useFrame onclick=edit2(evt); xlink:href=#textFrame transform=translate(10,25)/ use id=useFrame2 onclick=edit2(evt); xlink:href=#textFrame transform=translate(10,50)/ JS function edit2(evt){ var objet=evt.target; var tspan1 = objet.getElementById(tspan1); //Doesn't work } Thanks! Sean -- I'd rather have a bottle in front of me, than a frontal lobotomy. -- Tom Waits - 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 -- I'd rather have a bottle in front of me, than a frontal lobotomy. -- Tom Waits - 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/ * 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/
RE: [svg-developers] Re: use tag and unique IDs
Yup, those guys are can be accessed easily, BUT when you modify them it will show everywhere you reference that def... Peter Kalev Senior Developer, SWF, LLC -Original Message- From: Sean [mailto:[EMAIL PROTECTED] Sent: Wednesday, February 08, 2006 11:31 AM To: svg-developers@yahoogroups.com Subject: Re: [svg-developers] Re: use tag and unique IDs I can get the use tag, I want to be able to navigate the use tag. I have the use referencing a g tag with several elements under the g tag. I want to be able to navigate those elements. I'm coming to the conclusion that it can't be done. Sean Peter Kalev wrote: Why don't you wrap the use element in a g id=, search for the g and then look for the use inside the g... Works fine for me... Peter Kalev Senior Developer, SWF, LLC -Original Message- From: Sean [mailto:[EMAIL PROTECTED] Sent: Wednesday, February 08, 2006 11:21 AM To: svg-developers@yahoogroups.com Subject: Re: [svg-developers] Re: use tag and unique IDs I should say navigate the use element. I realize that it is read only, but I can't figure out how to do that. Thanks. Sean wrote: Does any one have examples of using SVGUseElement SVGElementInstance? Thanks. Sean Sean wrote: Hi Alastair, Thanks for the input. I figured as much with the id, but getElementByName didn't work either. I was hoping that something would work. I tried the childNodes and firstChild, but nothing works. objet.childNodes.length returns 0, which appears to mean that the child nodes under the use tag don't get recognized, rendering the approaches below useless, no pun intended. My failure to get the use tags to work would mean the difference between using 35,000 tags and 210,000 tags. I have quite the incentive to make it work. Thanks. var objet=evt.target; alert(objet.childNodes.length); var child = objet.firstChild; i=0; while(child != null){ childSibling = child.nextSibling; alert(child.nodeType); child = childSibling; } Sean Alastair Fettes wrote: You've made a fundamental mistake. 1. The idea behind a defs section is to resuse (have multiple copies) of an definition. 2. The idea of an ID attribute is to only have one attribute with a specific value document wide (see xs:ID type - http://www.w3.org/TR/xmlschema-2/#ID). So therefore you have a fundamental mistake. The defs section and the id invalidate each other. The only thing you could (possibly) do would be to getElementById( useFrame2 ).childNodes.foo.bar to get the tspan. Maybe, i don't guarantee it. Alastair --- In svg-developers@yahoogroups.com, Sean [EMAIL PROTECTED] wrote: I would like to use the use tags to save much text size as below. Problem is grabbing and editing data with onclick events. The id for my tspan would always be the same, but they would be used in different use tags with unique IDs. Is there a way to isolate say the tspan1 under useFrame2? SVG defs g id=textFrame cat=textBox text cat=textBox font-size=14 font=sans-serif tspan id=tspan1 cat=textBoxText/tspan/text texttspan visibility=hidden id=tspan2/tspan/text /g /defs use id=useFrame onclick=edit2(evt); xlink:href=#textFrame transform=translate(10,25)/ use id=useFrame2 onclick=edit2(evt); xlink:href=#textFrame transform=translate(10,50)/ JS function edit2(evt){ var objet=evt.target; var tspan1 = objet.getElementById(tspan1); //Doesn't work } Thanks! Sean -- I'd rather have a bottle in front of me, than a frontal lobotomy. -- Tom Waits - 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 -- I'd rather have a bottle in front of me, than a frontal lobotomy. -- Tom Waits - 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 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/ * 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/
Re: [svg-developers] Re: use tag and unique IDs
Sean, It can be done, it just has to be done differently in each browser. Try this code inside of your event: var target = evt.target; var use = null if (target == null) return; if (target.correspondingUseElement) use = target.correspondingUseElement; This is a sure way to get the use element from the target (in case it is not correctly returned as an SVGElementInstance). The correspondingElement property is not itself reliable (because of inconsitent implementation interpretations). Once you have that you should be able to access use.instanceRoot, use.animatedInstanceRoot (less reliable) From that you should get a reliable SVGElementInstance on which you can use the correspondingElement property. Additionally you should be able to use read only DOM properties. See http://www.w3.org/TR/SVG/struct.html#InterfaceSVGElementInstance Also, once you have the use element, you can simply follow the link specified in the URI reference or simply lookup the referenced element by the specified ID. Cheers, Jeff Rafter Sean wrote: I can get the use tag, I want to be able to navigate the use tag. I have the use referencing a g tag with several elements under the g tag. I want to be able to navigate those elements. I'm coming to the conclusion that it can't be done. Sean Peter Kalev wrote: Why don't you wrap the use element in a g id=, search for the g and then look for the use inside the g... Works fine for me... Peter Kalev Senior Developer, SWF, LLC -Original Message- From: Sean [mailto:[EMAIL PROTECTED] Sent: Wednesday, February 08, 2006 11:21 AM To: svg-developers@yahoogroups.com Subject: Re: [svg-developers] Re: use tag and unique IDs I should say navigate the use element. I realize that it is read only, but I can't figure out how to do that. Thanks. Sean wrote: Does any one have examples of using SVGUseElement SVGElementInstance? Thanks. Sean Sean wrote: Hi Alastair, Thanks for the input. I figured as much with the id, but getElementByName didn't work either. I was hoping that something would work. I tried the childNodes and firstChild, but nothing works. objet.childNodes.length returns 0, which appears to mean that the child nodes under the use tag don't get recognized, rendering the approaches below useless, no pun intended. My failure to get the use tags to work would mean the difference between using 35,000 tags and 210,000 tags. I have quite the incentive to make it work. Thanks. var objet=evt.target; alert(objet.childNodes.length); var child = objet.firstChild; i=0; while(child != null){ childSibling = child.nextSibling; alert(child.nodeType); child = childSibling; } Sean Alastair Fettes wrote: You've made a fundamental mistake. 1. The idea behind a defs section is to resuse (have multiple copies) of an definition. 2. The idea of an ID attribute is to only have one attribute with a specific value document wide (see xs:ID type - http://www.w3.org/TR/xmlschema-2/#ID). So therefore you have a fundamental mistake. The defs section and the id invalidate each other. The only thing you could (possibly) do would be to getElementById( useFrame2 ).childNodes.foo.bar to get the tspan. Maybe, i don't guarantee it. Alastair --- In svg-developers@yahoogroups.com, Sean [EMAIL PROTECTED] wrote: I would like to use the use tags to save much text size as below. Problem is grabbing and editing data with onclick events. The id for my tspan would always be the same, but they would be used in different use tags with unique IDs. Is there a way to isolate say the tspan1 under useFrame2? SVG defs g id=textFrame cat=textBox text cat=textBox font-size=14 font=sans-serif tspan id=tspan1 cat=textBoxText/tspan/text texttspan visibility=hidden id=tspan2/tspan/text /g /defs use id=useFrame onclick=edit2(evt); xlink:href=#textFrame transform=translate(10,25)/ use id=useFrame2 onclick=edit2(evt); xlink:href=#textFrame transform=translate(10,50)/ JS function edit2(evt){ var objet=evt.target; var tspan1 = objet.getElementById(tspan1); //Doesn't work } Thanks! Sean -- I'd rather have a bottle in front of me, than a frontal lobotomy. -- Tom Waits - 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 unsubscribe send a message to: [EMAIL PROTECTED] -or- visit http://groups.yahoo.com/group/svg-developers and click edit my