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
$(document).ready(function () { $.history.init(pageload); $('a[href=' + document.location.hash + ']').addClass('selected'); $('a[rel=ajax]').click(function () { var hash = this.href; hash = hash.replace(/^.*#/, ''); $.history.load(hash); $('a[rel=ajax]').removeClass('selected'); $(this).addClass('selected'); $('#content').hide(); $('#loading').show(); getPage(); return false; }); }); function pageload(hash) { if (hash) getPage(); } function getPage() { var data = 'page=' + encodeURIComponent(document.location.hash); $.ajax({ url: "loader.php", type: "GET", data: data, cache: false, success: function (html) { $('#loading').hide(); $('#content').html(html); $('#content').fadeIn('slow'); } }); }
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
switch($_GET['page']) { case 'ejemplo1' : include_once("ejemplo1.php");break; }
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
function busqueda() { //Recojo el valor del textbox objText = document.getElementById("X").value //Recojo el valor de la lista desplegable objSelect = document.getElementById("Y") valorSelect = objSelect.options[objSelect.selectedIndex].value document.links['buscar'].href = '#info=' + objText + '&info=' + valorSelect }
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 ;)