That sounds absolutely marvellous! Thankyou so much. Where can I get theI will probably commit the changes to CVS tonight. It will also include the move to the
updated code and/or jars from?
tri-stated JSVGCanvas (STATIC, INTERACTIVE, DYNAMIC) - more on that later though.
William.
From: "Thomas DeWeese" <[EMAIL PROTECTED]>
Hi William,[this
I just took a look at this and I made the evaluation of the contentScriptType attribute lazy. So unless you set one of the 'script' attributes ('onload', 'onmouseover', yadah, yadah, yadah) it doesn't matter what contentScriptType is set to. This also simplified the code somewhat, allowed me to only issue the 'unknown language' error once per language, and probably improved performance in several cases.
This should mean that you can just remove the script/rhino package from your applet (along with js.jar) and not have any problems (as long as you don't load documents that want to use scripting of course). Does this seem like a suitable solution to your problems?
William Billingsley wrote:
Thought I'd pitch back in since my message was linked...
I haven't tried removing the Rhino classes (though it might work) because
there seems to be another issue that is really the crux of the problem
allis just a symptom]. Batik only tries to load the Rhino interpreter at
(Ibecause of the contentScriptType="text/ecmascript" attribute on the SVG.
This is a default attribute in Batik, and cannot be removed, only changed
DOMunderstand in SVG 1.0 this is a required element; ironically it isn't required in the drafts for SVG 1.1). Consequently, shortly after Rhino fails to load, an "unknown language: text/ecmascript" error occurs.
There seem to be only two solutions:
1. Make the document Static to the canvas -- but this also prevents the
wantupdate listener from loading, which is rather useless if you actually
toto make any alterations to the SVG document from within your applet (as I do). 2. Change the contentScriptType.
The seemingly obvious solution would be to change the contentScriptType
willJava (I forget the tag), since you probably will be adding DOM listeners
from your applet. This has the snag that Batik then expects the Java
"script" attached to the document to be another set of classes that it
already-instansiateddynamically instansiate, and not the pre-existing and
majorlyclasses of your applet. [which holes that idea unless you want to
tore-engineer your applet in a very maintenance-hard way].
The temporary solution I am looking at is changing the contentScriptType
thea constant (something like ThrowawayThisException), and subclassing the
JSVGCanvas user agent to specifically suppress the "unknown language:
ThrowawayThisException" exception -- the exception will still happen but
user never will never see it and it won't stop anything from running.
I'm not sure this will work with the current architecture as I think you may get errors before the DOM events are generated (the new system should always send the event to the DOM even if the script can be fired).
More ideally, it would be nice if the "Dynamic Support" setting in the JSVGCanvas could be split into two separate settings for DOM Update Listening support and Scripting Support.
This could be done as scripting is implemented as simply attaching additional listeners to the DOM, but the lazy approach I think solves this problem and avoids introducing another 'dynamic' state.
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
