You are viewing a plain text version of this content. The canonical link for it is here.
Posted to batik-users@xmlgraphics.apache.org by Denis Bohm <de...@fireflydesign.com> on 2003/08/27 01:06:38 UTC

interperter exception

I'm trying to do some scripting within Batik and am getting an exception
when trying to call a function on an element.  Anyone have any idea why?
(The same SVG works in the Adobe plugin.)

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd" [
]>
<svg width="600" height="400" onload="setText2('foo')">
    <script type="text/ecmascript">
function setText2(text) {
    var text2 = document.getElementById("text2");
    var oldNode = text2.firstChild();
}
    </script>
    <text id="text2" x="60" y="40" text-anchor="end">???</text><text x="70"
y="40">b/sec</text>
</svg>


TypeError: org.apache.batik.dom.GenericText@2da5a6 is not a function.
(Inline <script>
file:/C:/home/denis/sandbox/networkphysics/prototype/sources/com/networkphysics/ui/map/demo.svg:-1;
line 10)

 at
org.mozilla.javascript.NativeGlobal.constructError(NativeGlobal.java:597)

 at
org.mozilla.javascript.NativeGlobal.constructError(NativeGlobal.java:557)

 at org.mozilla.javascript.NativeGlobal.typeError1(NativeGlobal.java:567)

 at org.mozilla.javascript.ScriptRuntime.call(ScriptRuntime.java:1182)

 at org.mozilla.javascript.gen.c2.call(Inline <script>
file:/C:/home/denis/sandbox/networkphysics/prototype/sources/com/networkphysics/ui/map/demo.svg:-1:10)

 at
org.mozilla.javascript.optimizer.OptRuntime.callSimple(OptRuntime.java:275)

 at org.mozilla.javascript.gen.c4.call(Event attribute
file:/C:/home/denis/sandbox/networkphysics/prototype/sources/com/networkphysics/ui/map/demo.svg:-1
onload:1)

 at org.mozilla.javascript.gen.c4.exec(Event attribute
file:/C:/home/denis/sandbox/networkphysics/prototype/sources/com/networkphysics/ui/map/demo.svg:-1
onload)

 at org.mozilla.javascript.Context.evaluateReader(Context.java:820)

 at
org.apache.batik.script.rhino.RhinoInterpreter.evaluate(RhinoInterpreter.jav
a:257)

 at
org.apache.batik.bridge.BaseScriptingEnvironment$1.handleEvent(BaseScripting
Environment.java:552)

 at
org.apache.batik.dom.events.EventSupport.fireEventListeners(EventSupport.jav
a:268)

 at
org.apache.batik.dom.events.EventSupport.dispatchEvent(EventSupport.java:231
)

 at org.apache.batik.dom.AbstractNode.dispatchEvent(AbstractNode.java:455)

 at
org.apache.batik.bridge.BaseScriptingEnvironment.dispatchSVGLoad(BaseScripti
ngEnvironment.java:560)

 at
org.apache.batik.bridge.BaseScriptingEnvironment.dispatchSVGLoadEvent(BaseSc
riptingEnvironment.java:492)

 at
org.apache.batik.bridge.UpdateManager.dispatchSVGLoadEvent(UpdateManager.jav
a:185)

 at
org.apache.batik.swing.svg.SVGLoadEventDispatcher.run(SVGLoadEventDispatcher
.java:140)





---------------------------------------------------------------------
To unsubscribe, e-mail: batik-users-unsubscribe@xml.apache.org
For additional commands, e-mail: batik-users-help@xml.apache.org


Re: interperter exception

Posted by Jamie <ja...@exponent.co.uk>.
----- Original Message -----
From: "Thomas DeWeese" <Th...@Kodak.com>
To: "Batik Users" <ba...@xml.apache.org>
Sent: Wednesday, August 27, 2003 12:41 PM
Subject: Re: interperter exception


> Jamie wrote:
> > AFAIO the correct syntax is: text2.getFirstChild(). This is the function
you
> > should use in Adobe; from their CurrentSupport.pdf:
>
>    The correct syntax according to DOM/SVG is 'text2.firstChild' anything
else
> is not compliant.


Yes getFirstChild etc are bridge methods that will only work in Netscape


> BTW you can have your content use the Adobe interpreter with the following
> on the outermost SVG element:
>
>       xmlns:a3="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
>       a3:scriptImplementation="Adobe"
>

But not if you need to communicate with the browser or another SVG file on
the same HTML page :-(


---------------------------------------------------------------------
To unsubscribe, e-mail: batik-users-unsubscribe@xml.apache.org
For additional commands, e-mail: batik-users-help@xml.apache.org


Re: interperter exception

Posted by Thomas DeWeese <Th...@Kodak.com>.
Jamie wrote:
> AFAIO the correct syntax is: text2.getFirstChild(). This is the function you
> should use in Adobe; from their CurrentSupport.pdf:

   The correct syntax according to DOM/SVG is 'text2.firstChild' anything else
is not compliant.

> 
> "The script engine interface technology available on Netscape for the
> Macintosh does not support writable attributes on interfaces. To work around
> this limitation, Adobe SVG Viewer supports additional "get/set" methods for
> each DOM interface attribute. For cross-browser script compatibility you
> should always use these methods instead of the writable attributes listed
> below. For example, to read from and write to the attribute nodeValue on the
> Node interface, use the methods getNodeValue and setNodeValue, instead."
> 
> Does this same syntax work in Batik?

     Yes this will work in Batik, but this is _not_ compliant with
the DOM/SVG ecma binding.  Also I would expect that the above referenced
problem is easily solved by using the Adobe script engine rather than
the browser native script engine.

     Admittedly this is also in some sense not compliant with the SVG spec
but one attribute in the Adobe namespace is much less of an issue than
dozens of calls (to be honest I can't think of any way this violates
the DOM/SVG specification - well I suspose they should have used the
Adobe engine and allowed the option of switching to the less compliant
browser engine).

BTW you can have your content use the Adobe interpreter with the following
on the outermost SVG element:

      xmlns:a3="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
      a3:scriptImplementation="Adobe"

     But at this point we are really off topic and probably better discusses
in the yahoo SVG group.

> ----- Original Message -----
> From: "Denis Bohm" <de...@fireflydesign.com>
> To: "Batik Users" <ba...@xml.apache.org>
> Sent: Wednesday, August 27, 2003 12:19 AM
> Subject: Re: interperter exception
> 
> 
> 
>>If I change "text2.firstChild()" to "text2.firstChild" then it works.  I
>>assume the second form is the correct one?  And that Adobe is just more
>>forgiving...
>>
>>----- Original Message -----
>>From: "Denis Bohm" <de...@fireflydesign.com>
>>To: "Batik Users" <ba...@xml.apache.org>
>>Sent: Tuesday, August 26, 2003 4:06 PM
>>Subject: interperter exception
>>
>>
>>
>>>I'm trying to do some scripting within Batik and am getting an exception
>>>when trying to call a function on an element.  Anyone have any idea why?
>>>(The same SVG works in the Adobe plugin.)
>>>
>>><?xml version="1.0" encoding="utf-8"?>
>>><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
>>>"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd" [
>>>]>
>>><svg width="600" height="400" onload="setText2('foo')">
>>>    <script type="text/ecmascript">
>>>function setText2(text) {
>>>    var text2 = document.getElementById("text2");
>>>    var oldNode = text2.firstChild();
>>>}
>>>    </script>
>>>    <text id="text2" x="60" y="40" text-anchor="end">???</text><text
>>
>>x="70"
>>
>>>y="40">b/sec</text>
>>></svg>
>>>
>>>
>>>TypeError: org.apache.batik.dom.GenericText@2da5a6 is not a function.
>>>(Inline <script>
>>>
> file:/C:/home/denis/sandbox/networkphysics/prototype/sources/com/networkphys
> ics/ui/map/demo.svg:-1;
> 
>>>line 10)
>>>
>>> at
>>>
> 
> org.mozilla.javascript.NativeGlobal.constructError(NativeGlobal.java:597)
> 
>>> at
>>>
> 
> org.mozilla.javascript.NativeGlobal.constructError(NativeGlobal.java:557)
> 
>>> at
> 
> org.mozilla.javascript.NativeGlobal.typeError1(NativeGlobal.java:567)
> 
>>> at org.mozilla.javascript.ScriptRuntime.call(ScriptRuntime.java:1182)
>>>
>>> at org.mozilla.javascript.gen.c2.call(Inline <script>
>>>
> file:/C:/home/denis/sandbox/networkphysics/prototype/sources/com/networkphys
> ics/ui/map/demo.svg:-1:10)
> 
>>> at
>>>
>>
> org.mozilla.javascript.optimizer.OptRuntime.callSimple(OptRuntime.java:275)
> 
>>> at org.mozilla.javascript.gen.c4.call(Event attribute
>>>
>>
> file:/C:/home/denis/sandbox/networkphysics/prototype/sources/com/networkphys
> ics/ui/map/demo.svg:-1
> 
>>>onload:1)
>>>
>>> at org.mozilla.javascript.gen.c4.exec(Event attribute
>>>
>>
> file:/C:/home/denis/sandbox/networkphysics/prototype/sources/com/networkphys
> ics/ui/map/demo.svg:-1
> 
>>>onload)
>>>
>>> at org.mozilla.javascript.Context.evaluateReader(Context.java:820)
>>>
>>> at
>>>
>>
> org.apache.batik.script.rhino.RhinoInterpreter.evaluate(RhinoInterpreter.jav
> 
>>>a:257)
>>>
>>> at
>>>
>>
> org.apache.batik.bridge.BaseScriptingEnvironment$1.handleEvent(BaseScripting
> 
>>>Environment.java:552)
>>>
>>> at
>>>
>>
> org.apache.batik.dom.events.EventSupport.fireEventListeners(EventSupport.jav
> 
>>>a:268)
>>>
>>> at
>>>
>>
> org.apache.batik.dom.events.EventSupport.dispatchEvent(EventSupport.java:231
> 
>>>)
>>>
>>> at
> 
> org.apache.batik.dom.AbstractNode.dispatchEvent(AbstractNode.java:455)
> 
>>> at
>>>
>>
> org.apache.batik.bridge.BaseScriptingEnvironment.dispatchSVGLoad(BaseScripti
> 
>>>ngEnvironment.java:560)
>>>
>>> at
>>>
>>
> org.apache.batik.bridge.BaseScriptingEnvironment.dispatchSVGLoadEvent(BaseSc
> 
>>>riptingEnvironment.java:492)
>>>
>>> at
>>>
>>
> org.apache.batik.bridge.UpdateManager.dispatchSVGLoadEvent(UpdateManager.jav
> 
>>>a:185)
>>>
>>> at
>>>
>>
> org.apache.batik.swing.svg.SVGLoadEventDispatcher.run(SVGLoadEventDispatcher
> 
>>>.java:140)
>>>
>>>
>>>
>>>
>>>
>>>---------------------------------------------------------------------
>>>To unsubscribe, e-mail: batik-users-unsubscribe@xml.apache.org
>>>For additional commands, e-mail: batik-users-help@xml.apache.org
>>>
>>>
>>
>>
>>---------------------------------------------------------------------
>>To unsubscribe, e-mail: batik-users-unsubscribe@xml.apache.org
>>For additional commands, e-mail: batik-users-help@xml.apache.org
>>
>>
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: batik-users-unsubscribe@xml.apache.org
> For additional commands, e-mail: batik-users-help@xml.apache.org
> 
> 




---------------------------------------------------------------------
To unsubscribe, e-mail: batik-users-unsubscribe@xml.apache.org
For additional commands, e-mail: batik-users-help@xml.apache.org


Re: interperter exception

Posted by Jamie <ja...@exponent.co.uk>.
AFAIO the correct syntax is: text2.getFirstChild(). This is the function you
should use in Adobe; from their CurrentSupport.pdf:

"The script engine interface technology available on Netscape for the
Macintosh does not support writable attributes on interfaces. To work around
this limitation, Adobe SVG Viewer supports additional "get/set" methods for
each DOM interface attribute. For cross-browser script compatibility you
should always use these methods instead of the writable attributes listed
below. For example, to read from and write to the attribute nodeValue on the
Node interface, use the methods getNodeValue and setNodeValue, instead."

Does this same syntax work in Batik?


----- Original Message -----
From: "Denis Bohm" <de...@fireflydesign.com>
To: "Batik Users" <ba...@xml.apache.org>
Sent: Wednesday, August 27, 2003 12:19 AM
Subject: Re: interperter exception


> If I change "text2.firstChild()" to "text2.firstChild" then it works.  I
> assume the second form is the correct one?  And that Adobe is just more
> forgiving...
>
> ----- Original Message -----
> From: "Denis Bohm" <de...@fireflydesign.com>
> To: "Batik Users" <ba...@xml.apache.org>
> Sent: Tuesday, August 26, 2003 4:06 PM
> Subject: interperter exception
>
>
> > I'm trying to do some scripting within Batik and am getting an exception
> > when trying to call a function on an element.  Anyone have any idea why?
> > (The same SVG works in the Adobe plugin.)
> >
> > <?xml version="1.0" encoding="utf-8"?>
> > <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
> > "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd" [
> > ]>
> > <svg width="600" height="400" onload="setText2('foo')">
> >     <script type="text/ecmascript">
> > function setText2(text) {
> >     var text2 = document.getElementById("text2");
> >     var oldNode = text2.firstChild();
> > }
> >     </script>
> >     <text id="text2" x="60" y="40" text-anchor="end">???</text><text
> x="70"
> > y="40">b/sec</text>
> > </svg>
> >
> >
> > TypeError: org.apache.batik.dom.GenericText@2da5a6 is not a function.
> > (Inline <script>
> >
>
file:/C:/home/denis/sandbox/networkphysics/prototype/sources/com/networkphys
ics/ui/map/demo.svg:-1;
> > line 10)
> >
> >  at
> >
org.mozilla.javascript.NativeGlobal.constructError(NativeGlobal.java:597)
> >
> >  at
> >
org.mozilla.javascript.NativeGlobal.constructError(NativeGlobal.java:557)
> >
> >  at
org.mozilla.javascript.NativeGlobal.typeError1(NativeGlobal.java:567)
> >
> >  at org.mozilla.javascript.ScriptRuntime.call(ScriptRuntime.java:1182)
> >
> >  at org.mozilla.javascript.gen.c2.call(Inline <script>
> >
>
file:/C:/home/denis/sandbox/networkphysics/prototype/sources/com/networkphys
ics/ui/map/demo.svg:-1:10)
> >
> >  at
> >
>
org.mozilla.javascript.optimizer.OptRuntime.callSimple(OptRuntime.java:275)
> >
> >  at org.mozilla.javascript.gen.c4.call(Event attribute
> >
>
file:/C:/home/denis/sandbox/networkphysics/prototype/sources/com/networkphys
ics/ui/map/demo.svg:-1
> > onload:1)
> >
> >  at org.mozilla.javascript.gen.c4.exec(Event attribute
> >
>
file:/C:/home/denis/sandbox/networkphysics/prototype/sources/com/networkphys
ics/ui/map/demo.svg:-1
> > onload)
> >
> >  at org.mozilla.javascript.Context.evaluateReader(Context.java:820)
> >
> >  at
> >
>
org.apache.batik.script.rhino.RhinoInterpreter.evaluate(RhinoInterpreter.jav
> > a:257)
> >
> >  at
> >
>
org.apache.batik.bridge.BaseScriptingEnvironment$1.handleEvent(BaseScripting
> > Environment.java:552)
> >
> >  at
> >
>
org.apache.batik.dom.events.EventSupport.fireEventListeners(EventSupport.jav
> > a:268)
> >
> >  at
> >
>
org.apache.batik.dom.events.EventSupport.dispatchEvent(EventSupport.java:231
> > )
> >
> >  at
org.apache.batik.dom.AbstractNode.dispatchEvent(AbstractNode.java:455)
> >
> >  at
> >
>
org.apache.batik.bridge.BaseScriptingEnvironment.dispatchSVGLoad(BaseScripti
> > ngEnvironment.java:560)
> >
> >  at
> >
>
org.apache.batik.bridge.BaseScriptingEnvironment.dispatchSVGLoadEvent(BaseSc
> > riptingEnvironment.java:492)
> >
> >  at
> >
>
org.apache.batik.bridge.UpdateManager.dispatchSVGLoadEvent(UpdateManager.jav
> > a:185)
> >
> >  at
> >
>
org.apache.batik.swing.svg.SVGLoadEventDispatcher.run(SVGLoadEventDispatcher
> > .java:140)
> >
> >
> >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: batik-users-unsubscribe@xml.apache.org
> > For additional commands, e-mail: batik-users-help@xml.apache.org
> >
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: batik-users-unsubscribe@xml.apache.org
> For additional commands, e-mail: batik-users-help@xml.apache.org
>
>


---------------------------------------------------------------------
To unsubscribe, e-mail: batik-users-unsubscribe@xml.apache.org
For additional commands, e-mail: batik-users-help@xml.apache.org


Re: interperter exception

Posted by Denis Bohm <de...@fireflydesign.com>.
If I change "text2.firstChild()" to "text2.firstChild" then it works.  I
assume the second form is the correct one?  And that Adobe is just more
forgiving...

----- Original Message ----- 
From: "Denis Bohm" <de...@fireflydesign.com>
To: "Batik Users" <ba...@xml.apache.org>
Sent: Tuesday, August 26, 2003 4:06 PM
Subject: interperter exception


> I'm trying to do some scripting within Batik and am getting an exception
> when trying to call a function on an element.  Anyone have any idea why?
> (The same SVG works in the Adobe plugin.)
>
> <?xml version="1.0" encoding="utf-8"?>
> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
> "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd" [
> ]>
> <svg width="600" height="400" onload="setText2('foo')">
>     <script type="text/ecmascript">
> function setText2(text) {
>     var text2 = document.getElementById("text2");
>     var oldNode = text2.firstChild();
> }
>     </script>
>     <text id="text2" x="60" y="40" text-anchor="end">???</text><text
x="70"
> y="40">b/sec</text>
> </svg>
>
>
> TypeError: org.apache.batik.dom.GenericText@2da5a6 is not a function.
> (Inline <script>
>
file:/C:/home/denis/sandbox/networkphysics/prototype/sources/com/networkphysics/ui/map/demo.svg:-1;
> line 10)
>
>  at
> org.mozilla.javascript.NativeGlobal.constructError(NativeGlobal.java:597)
>
>  at
> org.mozilla.javascript.NativeGlobal.constructError(NativeGlobal.java:557)
>
>  at org.mozilla.javascript.NativeGlobal.typeError1(NativeGlobal.java:567)
>
>  at org.mozilla.javascript.ScriptRuntime.call(ScriptRuntime.java:1182)
>
>  at org.mozilla.javascript.gen.c2.call(Inline <script>
>
file:/C:/home/denis/sandbox/networkphysics/prototype/sources/com/networkphysics/ui/map/demo.svg:-1:10)
>
>  at
>
org.mozilla.javascript.optimizer.OptRuntime.callSimple(OptRuntime.java:275)
>
>  at org.mozilla.javascript.gen.c4.call(Event attribute
>
file:/C:/home/denis/sandbox/networkphysics/prototype/sources/com/networkphysics/ui/map/demo.svg:-1
> onload:1)
>
>  at org.mozilla.javascript.gen.c4.exec(Event attribute
>
file:/C:/home/denis/sandbox/networkphysics/prototype/sources/com/networkphysics/ui/map/demo.svg:-1
> onload)
>
>  at org.mozilla.javascript.Context.evaluateReader(Context.java:820)
>
>  at
>
org.apache.batik.script.rhino.RhinoInterpreter.evaluate(RhinoInterpreter.jav
> a:257)
>
>  at
>
org.apache.batik.bridge.BaseScriptingEnvironment$1.handleEvent(BaseScripting
> Environment.java:552)
>
>  at
>
org.apache.batik.dom.events.EventSupport.fireEventListeners(EventSupport.jav
> a:268)
>
>  at
>
org.apache.batik.dom.events.EventSupport.dispatchEvent(EventSupport.java:231
> )
>
>  at org.apache.batik.dom.AbstractNode.dispatchEvent(AbstractNode.java:455)
>
>  at
>
org.apache.batik.bridge.BaseScriptingEnvironment.dispatchSVGLoad(BaseScripti
> ngEnvironment.java:560)
>
>  at
>
org.apache.batik.bridge.BaseScriptingEnvironment.dispatchSVGLoadEvent(BaseSc
> riptingEnvironment.java:492)
>
>  at
>
org.apache.batik.bridge.UpdateManager.dispatchSVGLoadEvent(UpdateManager.jav
> a:185)
>
>  at
>
org.apache.batik.swing.svg.SVGLoadEventDispatcher.run(SVGLoadEventDispatcher
> .java:140)
>
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: batik-users-unsubscribe@xml.apache.org
> For additional commands, e-mail: batik-users-help@xml.apache.org
>
>


---------------------------------------------------------------------
To unsubscribe, e-mail: batik-users-unsubscribe@xml.apache.org
For additional commands, e-mail: batik-users-help@xml.apache.org