return itsNatDoc.serializeNode(scriptElem);
}
protected Element createInitScriptElement(final int prevScriptsToRemove)
{
ItsNatStfulDocumentImpl itsNatDoc = getItsNatStfulDocument();
// Hacemos un truco para evitar que se definan variables globales
// al ejecutar el script de carga, pues las variables dentro del <script>
// declaradas como var myvar = ... son inevitablemente globales (asociadas a window)
// As� evitamos enlazar a window objetos que ser�n temporales
// El truco de meter la funci�n entre par�ntesis lo usa por ejemplo SVGWeb
// M�s info sobre memory leaks en MSIE:
// http://msdn.microsoft.com/en-us/library/bb250448%28VS.85%29.aspx
// Esto es por ejemplo un gran problema para Batik como applet:
// http://old.nabble.com/Cache-entry-not-found---slows-drawing-display-td21562669.html
// http://www.nabble.com/FW%3A-Strange-applet-delay-revisited-to21494010.html
// http://old.nabble.com/attachment/21502224/0/disable-rhino-class-loader.patch
// Este problema se puede ver en la consola de los applets poniendo un nivel de rastreo 2 ("red")
// (obviamente sin aplicar la soluci�n).
// Estas declaraciones de paquetes globales que se citan en Internet
// se realizan en el constructor de RhinoInterpreter.java
// evitando variables globales minimizamos el problema
StringBuilder code = new StringBuilder();
Browser browser = getClientDocumentStful().getBrowser();
boolean enclosing = browser.isFunctionEnclosingByBracketSupported();
if (enclosing)
code.append("(function(){\n");
code.append( getInitScriptContentCode(prevScriptsToRemove) + "\n" );
if (enclosing)
code.append("})();"); // As� la propia funci�n tampoco no es global
Element scriptElem = createScriptElement(prevScriptsToRemove);
boolean loadScriptInline = itsNatDoc.isLoadScriptInline();
if (loadScriptInline)
{
setScriptContent(scriptElem,code.toString());
}
else