Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/12/2010, 14:57
Magico_ESP
 
Fecha de Ingreso: noviembre-2010
Mensajes: 2
Antigüedad: 13 años, 5 meses
Puntos: 0
[AYUDA] AJAX, JQUERY e IE (estoy desesperado)

Buenas compañeros, tengo un gran problema que me está volviendo loco y no se que hacer...

Tengo una aplicación donde la navegación se efectúa vía AJAX con Jquery y el plugin History del mismo.

Las etiquetas <a> que tengan rel="ajax" son las susceptibles al tratamiento:

Código Javascript:
Ver original
  1. $(document).ready(function () {
  2.            
  3.             $.history.init(pageload);  
  4.                
  5.             $('a[href=' + document.location.hash + ']').addClass('selected');
  6.            
  7.             $('a[rel=ajax]').click(function () {
  8.                
  9.                 var hash = this.href;
  10.                 hash = hash.replace(/^.*#/, '');
  11.                 $.history.load(hash);  
  12.                
  13.                 $('a[rel=ajax]').removeClass('selected');
  14.                 $(this).addClass('selected');
  15.                
  16.                 $('#content').hide();
  17.                 $('#loading').show();
  18.                
  19.                 getPage();
  20.            
  21.                 return false;
  22.             });
  23.         });
  24.            
  25.        
  26.         function pageload(hash) {
  27.             if (hash) getPage();    
  28.         }
  29.                
  30.         function getPage() {
  31.            
  32.             var data = 'page=' + encodeURIComponent(document.location.hash);
  33.             $.ajax({
  34.                 url: "loader.php", 
  35.                 type: "GET",       
  36.                 data: data,    
  37.                 cache: false,
  38.                 success: function (html) { 
  39.                
  40.                     $('#loading').hide();  
  41.                    
  42.                     $('#content').html(html);
  43.                    
  44.                     $('#content').fadeIn('slow');      
  45.                 }      
  46.         });
  47.     }

Ese es el código JavaScript. Funciona de forma que a mi archivo 'loader.php' llega mediante $_GET['page'] lo que figura en los HREF (lo que figura en negrita)<a href="#info>

Código PHP:
Ver original
  1. switch($_GET['page'])  {
  2.    case 'ejemplo1' : include_once("ejemplo1.php");break;
  3. }

Luego en el loader me encargaría de introducir un switch para en función de la página que solicite me cargue una u otra en el div id="content". (arriba un código de ejemplo)

Digamos que la página no se mueve del index por lo que la barra de direcciones siempre figura index.php#info,etc.

El problema es que prácticamente he terminado la aplicación y como lo venía probando en Firefox y Chrome sin problema, me encuentro que no me tira con IE...

Os explico que me sucede en IE:
- La navegación en si funciona, pero en el 'title' de la página me cambia de, por ejemplo, TITLE a title#contacto SOLO cuando es un vínculo generado en el PHP de los include. Es decir, cuando me muevo por el menú estático del index no pasa.

- Y esta la más gorda y que me mata. Tengo en una parte un pequeño buscador que funciona de la siguiente manera:

En función de la opción elegida en la lista desplegable y lo escrito en el textbox altero mediante JS el href del <a> de la siguiente forma (la llamada a esta función se hace en el evento onblur de tanto el textbox como la lista -- onblur="busqueda();return true":

Código Javascript:
Ver original
  1. function busqueda()
  2.     {  
  3.                 //Recojo el valor del textbox
  4.         objText = document.getElementById("X").value
  5.  
  6.                 //Recojo el valor de la lista desplegable
  7.         objSelect = document.getElementById("Y")
  8.         valorSelect = objSelect.options[objSelect.selectedIndex].value
  9.         document.links['buscar'].href = '#info=' + objText + '&info=' + valorSelect
  10.     }

Con Firefox y Chrome va perfecto, me cambia el valor y la busqueda va genial. En cambio con IE al pasar por la función y a posteriori linkar da un error en la página y dice exactamente: "'document.links.buscar' es nulo o no es un objeto"


Por favor les pido que me ayuden. Estoy desesperado... Muchas gracias de antemano ;)