Foros del Web » Programando para Internet » Javascript »

Cargar <script> y luego eliminarlo

Estas en el tema de Cargar <script> y luego eliminarlo en el foro de Javascript en Foros del Web. Buenas compañeros, escribo este post para ver si me podeis orientas o echar una mano. Lo que estoy haciendo es un sistema de widgets con ...
  #1 (permalink)  
Antiguo 20/02/2012, 06:55
 
Fecha de Ingreso: junio-2008
Mensajes: 165
Antigüedad: 15 años, 11 meses
Puntos: 6
Cargar <script> y luego eliminarlo

Buenas compañeros, escribo este post para ver si me podeis orientas o echar una mano.

Lo que estoy haciendo es un sistema de widgets con lo cual necesito usar javascript nativo (para no estar cargando librerias en paginas ajenas y crear conflictos si usan jquery, mootools...), la llamada al widget es una simple llamada:

<script type="text/javascript" src="http://www.direccion.com/wblogs_lista.get.js"></script>

Esa llamado la trato donde get por ejemplo es el callback y me genera otro

<script id="loaded" type="text/javascript" src="http://www.direccion.com/wblogs_lista.get.js?encode=html"> en el que ya tengo el JSON y el callback se ejecuta, lo que me gustaria es poder eliminar este ultimo <script> del dom para que solo quede la llamada inicial. El segundo <script> lo genero así:

Código Javascript:
Ver original
  1. widget.prototype.loadscript = function() {
  2.         //JS
  3.         curScriptTag = document.createElement('script');
  4.         curScriptTag.type = 'text/javascript';
  5.         curScriptTag.src = "http://www.direccion.com/#name_widget#.#myfuncion#.js?encode=html";
  6.         curScriptTag.id = "loaded";
  7.         document.getElementsByTagName("head")[0].appendChild(curScriptTag);
  8.         //END JS
  9.         //CSS
  10.         curCSScriptTag = document.createElement('script');
  11.         curCSScriptTag.type = 'text/css';
  12.         curCSScriptTag.src = "http://statics.direccion.com/widgets/css/#name_widget#.css";
  13.         curCSScriptTag.id = "loaded";
  14.         document.getElementsByTagName("head")[0].appendChild(curCSScriptTag);
  15.     }

con esto cargo el callback y otro script para el css, como podría eliminar estos una vez cargados para dejar el dom con la llamada inicial?
  #2 (permalink)  
Antiguo 20/02/2012, 07:02
Avatar de ryugen
Colaborador
 
Fecha de Ingreso: agosto-2008
Ubicación: Rosario, Santa Fe
Mensajes: 350
Antigüedad: 15 años, 8 meses
Puntos: 187
Respuesta: Cargar <script> y luego eliminarlo

Lo que deberías hacer es apuntar todo tu código a un objeto y luego destruirlo o anularlo (asignarle NULL).

En tu caso tienes :
Código Javascript:
Ver original
  1. widget.prototype.loadscript = function() {
  2.  
  3.         //JS
  4.  
  5.         curScriptTag = document.createElement('script');
  6.  
  7.         curScriptTag.type = 'text/javascript';
  8.  
  9.         curScriptTag.src = "http://www.direccion.com/#name_widget#.#myfuncion#.js?encode=html";
  10.  
  11.         curScriptTag.id = "loaded";
  12.  
  13.         document.getElementsByTagName("head")[0].appendChild(curScriptTag);
  14.  
  15.         //END JS
  16.  
  17.         //CSS
  18.  
  19.         curCSScriptTag = document.createElement('script');
  20.  
  21.         curCSScriptTag.type = 'text/css';
  22.  
  23.         curCSScriptTag.src = "http://statics.direccion.com/widgets/css/#name_widget#.css";
  24.  
  25.         curCSScriptTag.id = "loaded";
  26.  
  27.         document.getElementsByTagName("head")[0].appendChild(curCSScriptTag);
  28.  
  29.     }

Entonces una vez utilizada esta función:
Código Javascript:
Ver original
  1. widget.prototype.loadscript = null

De esta manera estas perdiendo el puntero a tu función por lo que el interprete de JavaScript tarde o temprano debería liberar la memoria ocupada por el script anterior. Sin embargo no tengo tanto conocimiento como para saber en que momento esto se hará.
  #3 (permalink)  
Antiguo 20/02/2012, 07:13
 
Fecha de Ingreso: junio-2008
Mensajes: 165
Antigüedad: 15 años, 11 meses
Puntos: 6
Respuesta: Cargar <script> y luego eliminarlo

Mmm gracias por responder! pero no me funciono :( no se si es por el interprete tarda bastante en liberar memoria o por que lo hice mal, realmente me gustaría que el código quedará limpio y ágil una vez cargado el script removerlo del dom, no habría una forma de controlar esto por eventos o algo así? perdon si pido mucho y sobretodo gracias por tu ayuda
  #4 (permalink)  
Antiguo 20/02/2012, 07:33
Avatar de ryugen
Colaborador
 
Fecha de Ingreso: agosto-2008
Ubicación: Rosario, Santa Fe
Mensajes: 350
Antigüedad: 15 años, 8 meses
Puntos: 187
Respuesta: Cargar <script> y luego eliminarlo

puedes pegar el código en contexto de como lo estas haciendo?
  #5 (permalink)  
Antiguo 20/02/2012, 07:41
 
Fecha de Ingreso: junio-2008
Mensajes: 165
Antigüedad: 15 años, 11 meses
Puntos: 6
Respuesta: Cargar <script> y luego eliminarlo

Este es el html que uso:

Código HTML:
Ver original
  1. <script type="text/javascript" src="http://www.direccion.com/wblogs_lista.get.js"></script>
  2. </head>
  3. <div id="mywidget"></div>
  4. </body>
  5. </html>

Este el javascript final:

Código Javascript:
Ver original
  1. var widget = function (){
  2.  
  3.     widget.prototype.get = function (JSON){
  4.         capa = document.getElementById('mywidget').innerHTML = JSON.html;
  5.     }
  6.  
  7.  
  8.     widget.prototype.loadscript = function() {
  9.         //JS
  10.         var curScriptTag = document.createElement('script');
  11.         curScriptTag.type = 'text/javascript';
  12.         curScriptTag.src = "http://w.direccion.com/widget.get.js?encode=html";
  13.         curScriptTag.id = "loaded";
  14.         document.getElementsByTagName("head")[0].appendChild(curScriptTag);
  15.         //END JS
  16.         //CSS
  17.          var cssLink=document.createElement("link");  
  18.          cssLink.setAttribute("rel", "stylesheet");  
  19.          cssLink.setAttribute("type", "text/css");  
  20.          cssLink.setAttribute("id", "loaded");  
  21.          cssLink.setAttribute("href", "http://statics.direccion.com/widgets/css/widget.css");  
  22.          document.getElementsByTagName("head")[0].appendChild(cssLink);  
  23.     }
  24.    
  25.     var a = this.loadscript();
  26. };
  27. widget = new widget();

La primera llamada esta genera el código de arriba un php hace un echo para llamar al callback asi:

widget.get({html:'......}).. //esto es el JSON que uso en el callback que en este caso es get

Etiquetas: html, js
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:32.