Ver Mensaje Individual
  #2 (permalink)  
Antiguo 28/04/2010, 19:56
jorgetuso
 
Fecha de Ingreso: abril-2010
Ubicación: Montevideo
Mensajes: 4
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: IExplorer captura link y ejecuta AJAX pero igual abre otra ventana nueva

El archivo donde está el problema (supongo) es http://universaldata.sytes.net/servidorweb/concepto.js

Código Javascript:
Ver original
  1. // JavaScript Document
  2.  
  3. function presionEnlace(e){
  4. //toma el link de "resultados" y ejecuta cargarConcepto
  5.   if (window.event)
  6.       { window.event.returnValue=false;
  7.         var url=window.event.srcElement.getAttribute('href');
  8.         cargarConcepto(url + "&origen=site");
  9.         return false;
  10.         }
  11.   else
  12.     if (e)    {
  13.       e.preventDefault();
  14.       var url=e.target.getAttribute('href');
  15.       cargarConcepto(url + "&origen=site");  } //para que Moxila...
  16. }
  17.  
  18. var conexion2;
  19. function cargarConcepto(url) {
  20. //funcion ajax asociada a evento link; pide la url (asp) del link de resultado
  21.   conexion2=crearXMLHttpRequest();
  22.   conexion2.onreadystatechange = procesarEventosConcepto;
  23.   conexion2.open("GET", url, true);
  24.   conexion2.send(null);
  25. }
  26.  
  27. function procesarEventosConcepto(){
  28. //carga en div concepto el resultado ajax de cargarConcepto
  29.   var concepto = document.getElementById("concepto");
  30.   if(conexion2.readyState == 4)
  31.       {
  32.         concepto.innerHTML = conexion2.responseText;
  33.         inicializarEventosHijos(concepto);
  34.         var scs=conexion2.responseText.extractScript();
  35.         scs.evalScript();
  36.       }
  37.   else
  38.       { concepto.innerHTML = "Cargando el concepto desde resultados " + "<img src='http://universaldata.sytes.net/imagenes/cargando.gif' >" ;  }
  39. }
  40.  
  41. function inicializarEventosHijos(codigo){  
  42. //captura los eventos de los links del concepto (desde resultados) asociando a la funcion presionEnlaceHijo y sobreEnlaceHijo
  43.     var lista=codigo.getElementsByTagName('a');
  44.     for(f=0;f<lista.length;f++){
  45.         if (window.event){
  46.             lista[f].attachEvent('onclick',clickEnlaceHijo);
  47.             return true;
  48.             addEvent(lista[f],'click',clickEnlaceHijo,false);
  49.             addEvent(lista[f],'dblclick',dobleclicEnlaceHijo,false);
  50.         } else {
  51.             addEvent(lista[f],'click',clickEnlaceHijo,false);
  52.             addEvent(lista[f],'dblclick',dobleclicEnlaceHijo,false);
  53.         }
  54.     }
  55. return false;
  56. }
  57.  
  58. function dobleclicEnlaceHijo(e){
  59. //toma el link de "conceptos" y ejecuta cargarHijo
  60.   if (window.event)
  61.       { window.event.returnValue=false;
  62.         var url=window.event.srcElement.getAttribute('href');
  63.         if (url==null || url.indexOf("concepto.asp")==-1){url=window.event.srcElement.parentNode.getAttribute('href')};
  64.         if (url==null ){return;};
  65.         cargarHijo(url + "&origen=site"); }
  66.   else {
  67.     if (e)    {
  68.         e.preventDefault();
  69.         var url=e.target.getAttribute('href');
  70.         if (url==null || url.indexOf("concepto.asp")==-1){url=e.target.parentNode.getAttribute('href')};
  71.         if (url==null ){return;};
  72.         cargarHijo(url + "&origen=site"); }  }
  73. }  
  74.  
  75. var pos_ant=0; var urlant;
  76.  
  77. function clickEnlaceHijo(e){
  78.     if (window.event){
  79.         var url=window.event.srcElement.getAttribute('href');
  80.         if (url==null || url.indexOf("concepto.asp")==-1){url=window.event.srcElement.parentNode.getAttribute('href')};
  81.         //if (url==null ){return false};
  82.         verHijo(url + "&origen=site");}
  83.     else {
  84.         if (e)    {
  85.           e.preventDefault();
  86.           var url=e.target.getAttribute('href');
  87.           if (url==null || url.indexOf("concepto.asp")==-1){url=e.target.parentNode.getAttribute('href')};
  88.            if (url==null ){return false};
  89.           if (url.indexOf("dinero.asp")>-1){verHijo(url)} else {
  90.           verHijo(url + "&origen=site"); }
  91.         }
  92.     };
  93. }
  94.  
  95. var conexion3;
  96.  
  97. function cargarHijo(url) {
  98. //funcion ajax asociada a evento link; pide la url (asp) del link de concepto
  99.   if(url==null)  { return ; }  
  100.   if(url=='')  { return ; }
  101.  
  102.   if(url.indexOf('descripci') != -1)  { return; }; //omite accion en descripciones
  103.   if(url.indexOf('tabla=foto') != -1)  {
  104.     return;
  105.     }; //omite accion en foto
  106.   if(url.indexOf('&tabla=bases') != -1){ //es una base
  107.     cargarResultadosBase(url);   return;
  108.   }
  109.  
  110.   if(url.indexOf('tabla=tablas') != -1){ //es una tabla
  111.     cargarTabla(url); return;
  112.   }
  113.  
  114.   if(url.indexOf('descripci') == -1 && url.indexOf('concepto')!=-1){
  115.       conexion3=crearXMLHttpRequest();
  116.       conexion3.onreadystatechange = procesarCargarHijo;
  117.       conexion3.open("GET", url+"&origen=site", true);
  118.       conexion3.send(null);
  119.       return;
  120.   }
  121.   //window.open(url);
  122. }
  123.  
  124. var conexion4;
  125. function verHijo(url) {
  126. //funcion ajax asociada a evento link; pide la url (asp) del link de concepto
  127.   if(url==null)  { return ; }  
  128.   if(url=='')  { return ; }
  129.  
  130. //omite vista previa de descripciones
  131.   var pos = url.indexOf('descripci');
  132.   if(pos != -1)  { return; };
  133.  
  134. //omite vista previa de tabla fotos
  135.   var pos = url.indexOf('tabla=foto');
  136.   if(pos != -1)  {      alert("Haga clic en el + a la izquierda de las fotos a 100 px o botón derecho y abrir en otra pestaña para tamaño original");
  137.  return;};
  138.  
  139. //alerta 3D
  140.   var pos = url.indexOf('3D');
  141.   if(pos != -1)  {      alert("Objetos 3D aún no programados en la version web, solo en EDU escritorio.");
  142.  return;};
  143.  
  144. //vista previa de las fotos  
  145.   ext=url.substr(url.length-16,4);
  146.   var posibl=".jpg.gif.png";
  147.   var pos = posibl.indexOf(ext.toLowerCase());
  148.   if(pos != -1)  {
  149.     var conceptohijo= document.getElementById("hijo");
  150.     url=url.substr(0,url.length-12);
  151.     conceptohijo.innerHTML = "<img src='GDE/"+url+"'>";
  152.     return;
  153.   };
  154.  
  155. //omite vista previa si no es concepto
  156.  
  157.   //excepciones
  158.   var pos = url.indexOf('concepto.asp');
  159.   var posgoog = url.indexOf('google');
  160.   var poswiki = url.indexOf('wiki');
  161.   var dine = url.indexOf('inero');
  162.   if (posgoog>-1 || poswiki>-1 || dine!=-1){window.open(url);};
  163.   if(pos == -1)  { return; };
  164.   conexion4=crearXMLHttpRequest();
  165.   conexion4.onreadystatechange = procesarVerHijo;
  166.   conexion4.open("GET", url+"&origen=site", true);
  167.   conexion4.send(null);
  168.  
  169. }
  170.  
  171. function procesarCargarHijo(){
  172. //carga en div concepto el resultado ajax de cargarConcepto
  173.   var concepto = document.getElementById("concepto");
  174.   if(conexion3.readyState == 4)
  175.       { concepto.innerHTML = conexion3.responseText;
  176.         var conceptohijo= document.getElementById("hijo");
  177.         conceptohijo.innerHTML = "<span>-</span>";
  178.         inicializarEventosHijos(concepto);
  179.       }
  180. }
  181.  
  182. function procesarVerHijo(){
  183. //carga en div 'hijo' el resultado ajax de cargarConcepto
  184.   var concepto= document.getElementById("hijo");
  185.   if(conexion4.readyState == 4)
  186.       { concepto.innerHTML = conexion4.responseText;
  187.         inicializarEventosVerHijos(concepto);
  188.         return;
  189.       }
  190.   else { concepto.innerHTML = "Cargando vista previa "  ;  }
  191.  
  192. }
  193.  
  194. function inicializarEventosVerHijos(codigo){  
  195. //captura los eventos de los links de los hijos asociando la funcion presionEnlaceHijo
  196.     var lista=codigo.getElementsByTagName('a');
  197.     for(f=0;f<lista.length;f++){
  198.                 addEvent(lista[f],'click',nada,false);
  199.     }
  200. }
  201.  
  202. function nada (){}


Estos son los archivos http://universaldata.sytes.net/servidorweb/tabla.js

Código Javascript:
Ver original
  1. function inicializarEventosBase(base){
  2. //captura los eventos de los links de base asociando la funcion presionEnlaceBase
  3. var lista=base.getElementsByTagName('a');
  4.     for(f=0;f<lista.length;f++){
  5.         addEvent(lista[f],'click',presionEnlaceBase,false);
  6.     }
  7. }
  8.  
  9. function presionEnlaceBase(e){
  10. //toma el link de "tablas" y ejecuta cargarTabla
  11.   if (window.event)
  12.       { window.event.returnValue=false;
  13.         var url=window.event.srcElement.getAttribute('href');
  14.         cargarTabla(url+"&origen=site"); }
  15.   else
  16.     if (e)    {
  17.       e.preventDefault();
  18.       var url=e.target.getAttribute('href');
  19.       cargarTabla(url+"&origen=site");  } //para que Moxila...
  20. }
  21.  
  22. var conexionT;
  23. function cargarTabla(url) {
  24. //funcion ajax asociada a evento link; pide la url (asp) del link de base
  25.  
  26.   conexionT=crearXMLHttpRequest();
  27.   conexionT.onreadystatechange = procesarEventosBase;
  28.   conexionT.open("GET", url, true);
  29.   conexionT.send(null);
  30. }
  31.  
  32. function procesarEventosBase(){
  33. //carga en div tabla el resultado ajax de cargarTabla
  34.   var latabla = document.getElementById("tabla");
  35.   if(conexionT.readyState == 4)
  36.       {
  37.         latabla.innerHTML = conexionT.responseText; //carga la tabla
  38.         inicializarEventosTabla(latabla);
  39.         var scs=conexionT.responseText.extractScript();
  40.         scs.evalScript();
  41.       }
  42.   else
  43.       { latabla.innerHTML = 'Cargando tabla ' + "<img src='http://universaldata.sytes.net/imagenes/cargando.gif'>";
  44.       }
  45. }

y el otro citado: http://universaldata.sytes.net/servidorweb/base.js

Código Javascript:
Ver original
  1. function presionBase(e){
  2. //toma el link de base y ejecuta cargarResultadosBase
  3.   if (window.event)
  4.       { window.event.returnValue=false;
  5.         var url=window.event.srcElement.getAttribute('href');
  6.         cargarResultadosBase(url); }
  7.   else
  8.     if (e) {
  9.       e.preventDefault();
  10.       var url=e.target.getAttribute('href');
  11.         cargarResultadosBase(url); }
  12. }
  13.  
  14. var conexionbase;
  15.  
  16. function cargarResultadosBase(url) {
  17. //pide ajax de para base
  18.   if(url==null)  { return; }
  19.   if(url==''){    return;  }
  20.   conexionbase=crearXMLHttpRequest();
  21.   conexionbase.onreadystatechange =verBase;
  22.   conexionbase.open("GET", url, true);
  23.   conexionbase.send(null);
  24. }
  25.  
  26. function verBase(){
  27. //coloca en div base el resultado de resultados.asp y inicializa sus eventos de links
  28.   var labase = document.getElementById("base");
  29.   if(conexionbase.readyState == 4)
  30.       { texto=conexionbase.responseText;
  31.       labase.innerHTML = texto; //carga la base
  32.       inicializarEventosBase(labase);
  33.       var scs=conexionbase.responseText.extractScript();    //capturamos los scripts
  34.       scs.evalScript();       //ahora si, comenzamos a interpretar todo  
  35.       }
  36.   else
  37.       { labase.innerHTML = 'Cargando base. ' + "<img src='http://universaldata.sytes.net/imagenes/cargando.gif'>";  }
  38. }

Esta muy complicado?