Foros del Web » Programando para Internet » Javascript »

Reduccion de lineas/optimización de codigo

Estas en el tema de Reduccion de lineas/optimización de codigo en el foro de Javascript en Foros del Web. Mi duda es sobre como puedo reducir el numero de lineas de 2 arrays, ya que por lo visto, el internet explorer me peta cuando ...
  #1 (permalink)  
Antiguo 22/08/2007, 05:02
Avatar de TCL_ZIP  
Fecha de Ingreso: noviembre-2003
Ubicación: Esporles, Mallorca, España
Mensajes: 690
Antigüedad: 20 años, 5 meses
Puntos: 4
Reduccion de lineas/optimización de codigo

Mi duda es sobre como puedo reducir el numero de lineas de 2 arrays, ya que por lo visto, el internet explorer me peta cuando hay tantas lineas y no es capaz de llegar a leer mis arrays. mi codigo es el siguiente:

Quitando el ASP
Código PHP:
var componentes_array = new Array();
var 
componentes_proveedores = new Array();

componentes_array["identificador1"]= "Descripción 1" ;
componentes_proveedores["identificador1"]= "segundocodigo1" ;
componentes_array["identificador2"]= "Descripción 2" ;
componentes_proveedores["identificador2"]= "segundocodigo2" ;
componentes_array["identificador3"]= "Descripción 3" ;
componentes_proveedores["identificador3"]= "segundocodigo3" ;
componentes_array["identificador4"]= "Descripción 4" ;
componentes_proveedores["identificador4"]= "segundocodigo4" ;
' Asi hasta 30.000 registros (contando los que hay como 4)
function describir(id) {
 return (componentes_array[id] == undefined) ? "No existe dicho componente" : componentes_array[id];
}
function proveedor(id){
 document.forms['
form1']['PROVEEDOR].value componentes_proveedores[id];

Con codigo asp(original)
Código PHP:
var componentes_array = new Array();
var 
componentes_proveedores = new Array();
<%
While ((
Repeat1__numRows <> 0) AND (NOT componentes.EOF))
%>

componentes_array["<%=(Replace(componentes.Fields.Item("CODART").Value, chr(34), "'") )%>"]= "<%=(Replace(" "&componentes.Fields.Item("DESCRIP").Value, chr(34), "'") )%>" ;
componentes_proveedores["<%=(Replace(componentes.Fields.Item("CODART").Value, chr(34), "'") )%>"]= "<%=(componentes.Fields.Item("CODPRO").Value)%>" ;

<% 
  Repeat1__index=Repeat1__index+1
  Repeat1__numRows=Repeat1__numRows-1
  componentes.MoveNext()
Wend
%>

function describir(id) {
 return (componentes_array[id] == undefined) ? "No existe dicho componente" : componentes_array[id];
}
function proveedor(id){
 document.forms['
form1']['PROVEEDOR].value componentes_proveedores[id];


que son llamadas desde estos 2 botones:
Código PHP:
<button type="button" onclick="COMPOPRODDESC.value = describir(COMPOPRODID.value)" >obtener descripción </button
        <
button type="button" onclick="proveedor(COMPOPRODID.value)" >proveedor</button

Me interesaria optimizar la distribución de las arrays, haciendo una array bidimensional envez de 2 arrays, o nose :S el echo es que en firefox me funciona perfectamente pero en ie, me da errores de sintaxis en una linea que se genera, que claramente no tiene:

componentes_array["5029766769988"]= " UPG AFTER EFFECTS STD V7UPG STD-STD SP" ;

en el contexto:
Código PHP:
componentes_array["5029766769926"]= " AFTER EFFECTS STD V7RET                              SP" ;
componentes_proveedores["5029766769926"]= "6" ;



componentes_array["5029766769988"]= " UPG AFTER EFFECTS STD V7UPG STD-STD                      SP" ;
componentes_proveedores["5029766769988"]= "6" ;



componentes_array["5029766770083"]= " AFTER EFFECTS PB 7 WIN INGLES" 
la linea pertenece a la linea: 81.928

P.D.:Ya tuve que ampliar el aspbuffer para poder ejecutar el escript, y en total contiene: 153.161 lineas
  #2 (permalink)  
Antiguo 22/08/2007, 08:10
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: Reduccion de lineas/optimización de codigo

Hola:

La verdad es que en principio no es un problema corriente, pero tuve un problema similar hace un tiempecito, y supongo que se tratará de algo parecido... en mi caso es código generado por php pero creo que podría ser un resultado similar.

La cuestión es que las líneas generadas con php no generaban el típico salto de línea (\n en php)... fíjate si el código generado (ver código fuente de tu navegador -sobre todo el que te dá problemas-) genera líneas demasiado largas... en php era cuestión de incrustar en las líneas largas la cadena "\n" o en vez de concatenar muchas cosas (cadenas) poner más sentencias echo.

Espero que te sirva.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 22/08/2007, 16:11
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Re: Reduccion de lineas/optimización de codigo

Uff, qué de líneas jeje.

Prueba quizás poniendo alert cada... veamos... si tienes 153 161 líneas pon un alert cada 10 000 líneas por ejemplo para acotar más el error.

Aunque probablemente con alerts() ya no de error, a veces me ha pasado con tareas pesadas.

Otra opción es ir añadiendo dinámicamente elementos al array, con setTimeout's, pero es mucho más problemático.



Un saludo.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #4 (permalink)  
Antiguo 23/08/2007, 01:22
Avatar de TCL_ZIP  
Fecha de Ingreso: noviembre-2003
Ubicación: Esporles, Mallorca, España
Mensajes: 690
Antigüedad: 20 años, 5 meses
Puntos: 4
Re: Reduccion de lineas/optimización de codigo

Cita:
Iniciado por derkenuke Ver Mensaje
Uff, qué de líneas jeje.

Prueba quizás poniendo alert cada... veamos... si tienes 153 161 líneas pon un alert cada 10 000 líneas por ejemplo para acotar más el error.

Aunque probablemente con alerts() ya no de error, a veces me ha pasado con tareas pesadas.

Otra opción es ir añadiendo dinámicamente elementos al array, con setTimeout's, pero es mucho más problemático.



Un saludo.

se me ha planteado otra opción que es hacer la parte pesada de la carga a asp y el javascript aligerarlo un poco, como podria hacer referencia al documento del cual ha sido abierto?
es decir:
-->documento1.asp
--> se hace click en un boton
--> Se abre en un popup documento2.asp
-->Se cierra el popup, y documento2.asp rellena unos campos del formulario del documento1.asp


como se haria esto?
  #5 (permalink)  
Antiguo 23/08/2007, 08:38
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Re: Reduccion de lineas/optimización de codigo

En documento.asp sólo tendrías que abrir el popup con window.open(), en la dirección de documento2.asp y olvidarte de todo en documento1.asp.

Luego documento2.asp contendrá el código para rellenar el array de documento1.asp. Las variables de documento1 tendrán acceso desde documento2 gracias al objeto opener, que apunta al objeto window de documento1.

Éste código te dejara verlo mejor. Imprimo el código en el popup mediante javascript, pero no hay duda de que podrías tenerlo escrito en "documento2.asp" y abrirlo directamente en el popup, sin tener que escribirle nada.

Código PHP:
var array_en_doc1 = ["casa""perro"];
alert("Hola, soy documento1 y este es mi array: "+array_en_doc1);
var 
documento2 window.open("about:blank""""width=300, height=300, top=200, left=200");

withdocumento2.document ) {
    
write("<script type='text/javascript'>");
    
write("alert('Hola, soy documento2 y leo el contenido del array en documento1: '+opener['array_en_doc1']);");
    
write("alert('Hola, soy documento2 y ahora voy a modificar ese array.');");
    
write("opener['array_en_doc1'].push('avión', 'lombriz');");
    
write("alert('Hola, soy documento2 y así ha quedado el array del documento1: '+opener['array_en_doc1']);");
    
write("</scri"+"pt>");
}
alert("Hola, vuelvo a ser documento1 y este es mi array: "+array_en_doc1); 
Creo que el ejemplo se verá mal en IE por su "seguridad", pero en FF (sin bloqueador de ventanas) lo he logrado ver bien y comprender el funcionamiento.

Y si no te funciona así creo que tendremos que tirar de AJAX ¿quizás? Las cosas pesadas se suelen hacer con AJAX, así no tienes que tener tus 30 000 registros en tu documento, en cuanto necesitas uno, lo pides a la base de datos. Es más engorroso, y más lento en el cliente, pero no estamos preparados para 30 000 registros...

Un saludo.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
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 15:05.