[SVG/Javascript] setAttribute unsupported?

Pagina: 1
Acties:

  • zikje
  • Registratie: Mei 2004
  • Niet online
evt.target.getAttribute('id')

Dit probeer ik toe te passen in een onmouseover functie met javascript toegepast op een element van een svg-document. Ik gebruikt de adobe svg 6 beta plugin. Normaal gezien zou dat ondersteund moeten zijn. Helaas krijg ik dit:

MS JScript runtime error: Object doesn't support this property or method

Ik begrijp er helemaal niks van.

code:
1
2
3
4
function OnRadioOver(evt) 
{
  alert(evt.target.getAttribute('id'));
}

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Heb je iets meer code? ;)

en JS hoort eigenlijk bij de buren [WG]

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • zikje
  • Registratie: Mei 2004
  • Niet online
code:
1
2
3
<use x="580" y="105" id="rArrangementen" xlink:href="#radio" onclick="RadioClicked(evt,'Arrangementen','info')" onmouseover="OnRadioOver(evt)"/>
    <use x="580" y="105" id="rfArrangementen" xlink:href="#radioFill" visibility="hidden"/>
    <text x="595" y="109" class="plaintext">arrangementen</text>

Dit is het SVG gedeelte: een radiobutton. Ik wil bij de onmouseover een gradient fill krijgen. Daarvoor heb ik die functie OnRadioOver gemaakt. Maar ik kan niet aan de attributes: getAttribute en setAttribute werken niet.

Vermits er een MS JScript error komt, vraag ik me toch af waarom dat zo is? Ik dacht dat wanneer je een SVG Plugin gebruikt dat je de Ecmascript daarvan zou gebruiken vermits die meer zaken ondersteunt dan de standaard javascipt van een webbrowser (enkel HTML DOM).

Misschien is dat het probleem.

  • r0bert
  • Registratie: September 2001
  • Laatst online: 26-04 17:38
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function fGetEvent(e, bSrcEl)
{
    if (!e)     e   = window.event;
            
    if (bSrcEl)     return (e.srcElement || e.target);
    else            return e;
}

function OnRadioOver(evt) 
{
    var oEventTarget = fGetEvent(evt, true);

    alert(oEventTarget.getAttribute('id');
}
:?

edit: misschien dat het zo werkt? Weet niet wat voor browser je gebruikt

Heb je het bovenstaande geprobeerd en werkte niet?

[ Voor 56% gewijzigd door r0bert op 20-01-2005 11:56 . Reden: weet niet zeker hoor, maar mssn heb je er wat aan ]


  • zikje
  • Registratie: Mei 2004
  • Niet online
En wat gebeurt er met bovenstaande code dan?

  • zikje
  • Registratie: Mei 2004
  • Niet online
[b][message=22616021,noline]edit: misschien dat het zo werkt? Weet niet wat voor browser je gebruikt
de adobe svg plugin werkt enkel volledig met IE. Met Firefox bijna volledig en met Opera half.

  • JeromeB
  • Registratie: September 2003
  • Laatst online: 19-03 22:07

JeromeB

woei

r0bert schreef op donderdag 20 januari 2005 @ 11:47:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function fGetEvent(e, bSrcEl)
{
    if (!e)     e   = window.event;
            
    if (bSrcEl)     return (e.srcElement || e.target);
    else            return e;
}

function OnRadioOver(evt) 
{
    var oEventTarget = fGetEvent(evt, true);

    alert(oEventTarget.getAttribute('id');
}
:?

edit: misschien dat het zo werkt? Weet niet wat voor browser je gebruikt

Heb je het bovenstaande geprobeerd en werkte niet?
Het parsen en interpreteren van de code gebeurt door de SVG Viewer en is dus onafhankelijk van de browser. Het is wel mogelijk om html:script te mengen met SVG, maar dat is een hoop gepiel en werkt ook niet erg bevredigend.

Het triggeren van events werkt gewoon op de volgende manier:
code:
1
2
3
4
function trigger(event)
{
    return event.target;
}


Je script bevat dus gewoon overbodig veel code.

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

Ik denk zelf dat het probleem een bug is in ASV6. Probeer het scriptje eens op een standaard element (circle of rect ofzo) inplaats van een USE-element. Kijk of de mouseover event-handler wel goed werkt en test het ook eens met een andere event-handler (mousemove of onclick ofzo). Ik heb gelezen dat de mouseover event-handler wel eens probleempjes veroorzaakt in ASV6.

offtopic:
Overigens gaat het zoiezo niet werken in Corel SVG Viewer. CSV implementeert het USE-element niet volgens de specificaties.

PC load letter? What the fuck does that mean?


  • André
  • Registratie: Maart 2002
  • Laatst online: 11-05 16:42

André

Analytics dude

Het verschil is dat IE event.srcElement gebruikt en Mozilla event.target :)

  • JeromeB
  • Registratie: September 2003
  • Laatst online: 19-03 22:07

JeromeB

woei

André schreef op donderdag 20 januari 2005 @ 13:07:
Het verschil is dat IE event.srcElement gebruikt en Mozilla event.target :)
Volgensmij wordt de code gewoon geinterpreteert door de SVG Viewer (wanneer je gebruik maakt van de SVG namespace), niet door de browser.

PC load letter? What the fuck does that mean?


Verwijderd

JeromeB schreef op donderdag 20 januari 2005 @ 13:20:

Volgensmij wordt de code gewoon geinterpreteert door de SVG Viewer (wanneer je gebruik maakt van de SVG namespace), niet door de browser.
Behalve als die browser zelf al SVG ondersteunt natuurlijk.

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Tikje over de schutting :)

Professionele website nodig?


  • JeromeB
  • Registratie: September 2003
  • Laatst online: 19-03 22:07

JeromeB

woei

Verwijderd schreef op donderdag 20 januari 2005 @ 13:22:
[...]

Behalve als die browser zelf al SVG ondersteunt natuurlijk.
Natuurlijk (Amaya is een leuk voorbeeld), maar de TS gaf toch duidelijk aan dat hij ASV6 gebruikt?

PC load letter? What the fuck does that mean?


  • Woudloper
  • Registratie: November 2001
  • Niet online

Woudloper

« - _ - »

Heb je wellicht al eens op onderstaande website gekeken, daar heb ik namelijk redelijk wat informatie vandaan kunnen halen voor wat betreft SVG:
[list]• SVG FAQSVG (door Bart Tierens) NL

  • zikje
  • Registratie: Mei 2004
  • Niet online
[message=22616764,noline]Het parsen en interpreteren van de code gebeurt door de SVG Viewer en is dus onafhankelijk van de browser

Ik denk zelf dat het probleem een bug is in ASV6. Ik heb gelezen dat de mouseover event-handler wel eens probleempjes veroorzaakt in ASV6.
Dit was het probleem. Ik heb het nu opnieuw gedaan met ASV3 en daar werkt het wel. Bij ASV6 is er een bug bij mouseover zodat hij daar de javascript engine van de browser gaat gebruiken: vandaar de foutmelding met JScript.

Het is wel spijtig want ASV6 ondersteunt text wrapping, waardoor ik dat nu allemaal manueel moet gaan coderen in javascript.

In ieder geval, allemaal bedankt voor jullie hulp!
Pagina: 1