Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Controlador de eventos para barra de direcciones

Estas en el tema de Controlador de eventos para barra de direcciones en el foro de Frameworks JS en Foros del Web. Buenas tardes a tod@s. Tengo una de mis preguntas "super raras" Querría saber si existe la manera de crear un controlador de Eventos, el cual ...

  #1 (permalink)  
Antiguo 24/07/2006, 06:50
Avatar de el_javi  
Fecha de Ingreso: marzo-2005
Ubicación: MAdrid
Mensajes: 844
Antigüedad: 19 años
Puntos: 10
Controlador de eventos para barra de direcciones

Buenas tardes a tod@s.

Tengo una de mis preguntas "super raras"

Querría saber si existe la manera de crear un controlador de Eventos, el cual se quede a la "escucha" SIEMPRE de lo que suceda en la URL de una página.

Hablando de otra manera: se puede estar con Javascripr pendiente siempre de lo que suceda en la barra de direcciones?

Mi finalidad es que en vez de ejecutar funciones Javascript en enlaces (onclick) en vez de eso, llamar a anclas de HTML (las cuales SI lee los buscadores) y que dependiendo del ancla que le llegue a nuestro "controlador de eventos" se ejecuten unas cosas u otras...

Como siempre, son ideas de bombero, pero es una necesidad que tengo, y qué mejor manera que preguntar a la gente profesional de nuestro foro.

Espero que puedan ayudarme.

Un saludo a tod@s, y espero vuestras palabras.
  #2 (permalink)  
Antiguo 24/07/2006, 10:14
Avatar de Nefertiter  
Fecha de Ingreso: enero-2003
Ubicación: Rosario
Mensajes: 1.316
Antigüedad: 21 años, 3 meses
Puntos: 9
mmm para mi si a tu web le entran con por ejempolo

www.tusitio.com/index.php#principal

y el contenido de index.php#principal sale de ejecutar la funcion
Cargar('principal')

como yo de Javascript no se un choto y recien ahora con prototype estoy aprendiendo algo

haria esto:
en index.php
Código PHP:

<?
$varible_js 
end(explode('#',$_SERVER['REQUEST_URI']));
?>
<body onload="Cargar('<?=$varible_js?>')">
  #3 (permalink)  
Antiguo 24/07/2006, 10:24
Avatar de el_javi  
Fecha de Ingreso: marzo-2005
Ubicación: MAdrid
Mensajes: 844
Antigüedad: 19 años
Puntos: 10
buenas tardes Nefertiter

Gracias por tu contestación.

El problema es que eso si lo tengo claro... he de tener una función que me carge la sección que sea, en el onload del documento, dependiendo del ancla de mi página... pero mi pregunta no es por hay... es por este camino...

Lo que quiero es que en mi menu, que tiene (por ejemplo)
Home Quienes Somos Equipo Contacto

Al pulsar en "Equipo" quiero hacer una petición por medio de Ajax a la base de datos.. pero quiero evitar que la petición sea por medio de pulsar en Equipo....

Mi intención es que al pulsar en equipo haya algo como <a href="#equipo">Equipo</a>

y que "un controlador de eventos en la barra de direcciones" sea el encargado de, según el ancla que sea.. me cargue unos datos desde la base de datos...

No se si me he explicado.. espero que si.

Gracias por contestar.. y a ver si alguien más se anima a lerrme...

  #4 (permalink)  
Antiguo 24/07/2006, 10:32
Avatar de Nefertiter  
Fecha de Ingreso: enero-2003
Ubicación: Rosario
Mensajes: 1.316
Antigüedad: 21 años, 3 meses
Puntos: 9
entonces tal algo asi?

<a href="#equipo" OnClick="Cargar('equipo')" >Equipo</a>
  #5 (permalink)  
Antiguo 24/07/2006, 10:50
Avatar de B**
B**
 
Fecha de Ingreso: enero-2006
Ubicación: Monterrey,Mexico
Mensajes: 952
Antigüedad: 18 años, 3 meses
Puntos: 3
el_javi ... en tu primer post dices q no quieres hacer funciones onclick? Y entonces como se supone q el usuario escogera una opcion ?Primero dices:
"Al pulsar en "Equipo" quiero hacer una petición por medio de Ajax a la base de datos.. pero quiero evitar que la petición sea por medio de pulsar en Equipo...."
Despues:
"Mi intención es que al pulsar en equipo haya algo como <a href="#equipo">Equipo</a>"

Por fin , quieres hacer onclick al enlace o no? Si no es por onclick u otro evento, como va a escoger entonces el usuario alguna opcion?
__________________
-URL= Go PHP5.
-Age=22.
-Learning=PHP,J2EE,Struts,MAMBO,C++,JSON,AJAX,XHTML ,CSS.
  #6 (permalink)  
Antiguo 24/07/2006, 12:45
 
Fecha de Ingreso: agosto-2005
Ubicación: Argentina, Capital Federal
Mensajes: 435
Antigüedad: 18 años, 8 meses
Puntos: 2
Hacer un sistema de la forma que dice el_javi () es útil en el caso que tengamos un sitio desarrollado en AJAX y queramos tener "links permanentes" a determinado contenido. Una dirección de este tipo sería algo como http://url.com/index.html#nombreSeccion la cual al colocarse en el navegador se cargará el index.html y el sistema traera mediante nuestras funciones el contenido que corresponda a la sección indicada por el ancla. Por otro lado, con algunos agregados, es también una buena forma de solucionar el tema del "back button", ya que un cambio de ancla sí es guardado en el historial de navegación de los navegadores (en IE hay que trabajar un poco más).

La forma de realizar esto es bastante sencilla, en el onLoad del body se llamará a una función X. Esta función mediante setInterval() irá obteniendo a intervalos regulares la URL donde estamos parados con window.location.href. Separamos la cadena para obtener el ancla y actuamos dependiendo su contenido.

Por último te comento que si bien un ancla puede ser leída por un buscador, el contenido que ese ancla representa debe ser traido mediante funciones JavaScript, por lo que el buscador debe ser capaz de comprender JavaScript para indexar el contenido de esa URL con ancla a su BD.

Saludos.
__________________
R4DS en español | R4DS en inglés
  #7 (permalink)  
Antiguo 24/07/2006, 15:14
Avatar de el_javi  
Fecha de Ingreso: marzo-2005
Ubicación: MAdrid
Mensajes: 844
Antigüedad: 19 años
Puntos: 10
Hola a todos, y ante todo, gracias por contestar.

Por partes:

B** .. la verdad que me he liado bastante en explicar lo que quiero... asi que.. os dejo escrito mi finalidad final y real del asunto

Mi intención, es la siguiente, ya más especificada

Tengo una Web, la cual tiene un menu (como todas las Webs no? jejejej)

El menu es: Productos.
Al pulsar en productos, he de cargar un listado de Fabricantes (en el menu).
Al pulsar en uno de los Fabricantes, he de cargar el listado de Estilos del fabricante.
Al pulsar en un estilo, llego al desglose final... Los productos.

Como es lógico, no voy a ahcer que al pulsar en una opción, me recargue la página y me haga la petición al servidor (ademas de que el cliente ha descartado dicha posibilidad), entonces, pensé en Ajax.

Entonces.. en el menu, al pulsar en cada cosa, tengo una llamada por Javascript (Ajax) con la que extraigo los datos sin problemas.

Pero mi intención es... que la web, pueda ser indexada por los buscadores.. y al ser mi menu en javascript, pues como que es el principal agrabante para no ser indexado.

Entonces se me ocurre la idea de que la navegación sea por Anclas (las cuales no producen recarga de la página)

Mi idea era que si pincho en "fabricantes" pues mi enlace en el menu sea
<a href="#fabricantes_1">Fabricante 1</a>
<a href="#fabricantes_23">Fabricante 2</a>
<a href="#fabricantes_12">Fabricante 3</a>
<a href="#fabricantes_78">Fabricante 4</a>

de tal manera que al pulsar, se ponga en la URL el ancla correspondiente.. y aqui entra en juego lo que busco...

Sería posible desarrollar un controlador de eventos, por el que al cambiarse la URL (y dado que es un ancla, no produce recarga)... seria posible poder capturar dicho cambio, y controlando mi ancla, llamar a mi función Javascript correspondiente?

Creo que ahora me he explicado más claramente, y con un ejemplo más lógico.

Querría, si es posible, que lo mirásemos bastante en profundidad, porque me parece algo bastante bueno, y con grandes aplicaciones no solo para ajax, sino para otras muchas funcionalidades Javascript.


zaqpz He pensado en:

Cita:
La forma de realizar esto es bastante sencilla, en el onLoad del body se llamará a una función X. Esta función mediante setInterval() irá obteniendo a intervalos regulares la URL donde estamos parados con window.location.href. Separamos la cadena para obtener el ancla y actuamos dependiendo su contenido.
Esto, no se si lo he entendido bien.. hay que dejar en la página cargado un setInterval contínuo, que cada ... ¿segundo? esté comprobando la URL?

Si esto es asi.. no produce sobrecarga en la página?

Y si en la página se ejecutan otras cosas con SetInterval, no hay ningún tipo de incompatibilidad?


Por otro lado, tembién he pensado en esto otro
Cita:
Por último te comento que si bien un ancla puede ser leída por un buscador, el contenido que ese ancla representa debe ser traido mediante funciones JavaScript, por lo que el buscador debe ser capaz de comprender JavaScript para indexar el contenido de esa URL con ancla a su BD.
Había pensado (y quiero que me des tu opinión, y el resto también).. había pensado lo siguiente:
Mis páginas, en un principio, todas cargarían por medio de Ajax, por el menú... pero atendiendo a que:
a) Si un buscador nos indexa, puede indexar http://www.mipagina.com/#productos... debería de poder indexar también el contenido de la página...
b) Si una persona agrega a favoritos la página en cuestión... agregaría http://www.mipagina.com/#estilos

entonces he pensado en un módulo en PHP, que trabaje también con la carga de información de la página, por medio del parámetro de la URL (el ancla).

Se que os estoy liando mucho, pero porfavor.. dedicar un poco de tiempo a esto, dado que me parece muy interesante, y podría ser algo bueno de cara al futuro.. una nueva manera de plantear las cosas (lo mismo es una paranoya, pero le veo una salida)

Espero vuestras contestaciones.

Gracias de antemano por la paciencia de leer mis post's, que son eternos.

Gracias a tod@s

  #8 (permalink)  
Antiguo 24/07/2006, 16:03
Avatar de B**
B**
 
Fecha de Ingreso: enero-2006
Ubicación: Monterrey,Mexico
Mensajes: 952
Antigüedad: 18 años, 3 meses
Puntos: 3
Oye se me ocurre algo parecido a lo q dic zaqpz...
Y si cuando llegues al menu fabricantes... cada q se cumpla,no se, 2 segundos? a traves de la funcion setinterval... llamas a un PHP,por medio DE AJAX!! y pones $SERVER['request_url']; q constantemente va a estar viendo q es lo que hay en la barra de direcciones, primero crear una $variable q contenga el request_url, luego verficar si variable es diferente a $variable, si se se cumple, quiere decir q cambio la direccion, y luego podrias a hacer uso de alguna funcion de PHP para sacar q hay en la direccion y ya hacer lo q tengas q hacer....
Es una simple idea,no la he hechado a andar ... q opinas?
__________________
-URL= Go PHP5.
-Age=22.
-Learning=PHP,J2EE,Struts,MAMBO,C++,JSON,AJAX,XHTML ,CSS.
  #9 (permalink)  
Antiguo 24/07/2006, 16:32
Avatar de SiR.CARAJ0DIDA  
Fecha de Ingreso: junio-2004
Ubicación: Acá
Mensajes: 1.166
Antigüedad: 19 años, 9 meses
Puntos: 4
justamente estoy desarrollando una pagina aplicando este metodo, 100% en ajax, lo de los botones atras/adelante anda perfecto en todos los navegadores excepto en la basura del IE y no entiendo como hacerlo funcionar, leí que hay que poner un iframe pero no se me ocurre como... alguien tiene idea?
__________________
Internet Explorer SuckS
Download FireFox
  #10 (permalink)  
Antiguo 24/07/2006, 17:28
Avatar de B**
B**
 
Fecha de Ingreso: enero-2006
Ubicación: Monterrey,Mexico
Mensajes: 952
Antigüedad: 18 años, 3 meses
Puntos: 3
Cita:
Iniciado por SiR.CARAJ0DIDA
justamente estoy desarrollando una pagina aplicando este metodo, 100% en ajax, lo de los botones atras/adelante anda perfecto en todos los navegadores excepto en la basura del IE y no entiendo como hacerlo funcionar, leí que hay que poner un iframe pero no se me ocurre como... alguien tiene idea?
Como es el metodo q estas usando?
PD>Maldita sea , por q no obligan a todos los navegadores a cumplir un mismo estandar!!!? Nos haria la vida mucho mas feliz !!!, pedire eso de Navidad..
__________________
-URL= Go PHP5.
-Age=22.
-Learning=PHP,J2EE,Struts,MAMBO,C++,JSON,AJAX,XHTML ,CSS.
  #11 (permalink)  
Antiguo 24/07/2006, 18:10
 
Fecha de Ingreso: agosto-2005
Ubicación: Argentina, Capital Federal
Mensajes: 435
Antigüedad: 18 años, 8 meses
Puntos: 2
Cita:
Iniciado por el_javi
Esto, no se si lo he entendido bien.. hay que dejar en la página cargado un setInterval contínuo, que cada ... ¿segundo? esté comprobando la URL?

Si esto es asi.. no produce sobrecarga en la página?

Y si en la página se ejecutan otras cosas con SetInterval, no hay ningún tipo de incompatibilidad?
Exactamente, aparentemente la única forma de detectar cambios en el anchor de nuestra URL es verificando la misma a intervalos regulares; al menos así lo hacen en todos los artículos que he leído.
Esto no produce sobrecarga, si bien no es de lo más "aconsejable" la navegación en la mayoría de los casos no se ve afectada.
Los setInterval pueden convivir perfectamente funcionando al mismo tiempo. Cada llamada a setInterval devuelve un identificador único que luego te puede servir para frenar su ejecución, por lo que no generan conflictos.

Cita:
Iniciado por el_javi
entonces he pensado en un módulo en PHP, que trabaje también con la carga de información de la página, por medio del parámetro de la URL (el ancla).
Lo importante es que un buscador, cuando acceda a tu URL se encuentre con la información que tu quieres que indexe, por lo que tu idea es perfectamente viable para este caso.

Cita:
Iniciado por SiR.CARAJ0DIDA
anda perfecto en todos los navegadores excepto en la basura del IE y no entiendo como hacerlo funcionar
Cuando clickeamos en un link que nos lleva a un ancla, por algún extraño motivo si ese ancla no existe en nuestro HTML, el IE (siempre dando la nota) simplemente la ignorará. Una posible solución sería colocar todas las anclas que necesitemos que existan en un DIV oculto, cosa que resulta poco elegante. La otra solución es la del iframe, la cual no estoy en tema como se aplica pero en este artículo lo detallan: http://www.contentwithstyle.co.uk/Ar...-for-ajax-apps

Saludos!
__________________
R4DS en español | R4DS en inglés
  #12 (permalink)  
Antiguo 25/07/2006, 07:38
Avatar de SiR.CARAJ0DIDA  
Fecha de Ingreso: junio-2004
Ubicación: Acá
Mensajes: 1.166
Antigüedad: 19 años, 9 meses
Puntos: 4
aa pero no habia probado eso de poner las anclas dentro del html... entonces una solucion puede ser hacer esto con cada link:

<a name="link1" href="#link1">Click me!</a>
<a name="link2" href="#link2">Click me!</a>
<a name="link3" href="#link3">Click me!</a>

ahora voy a probar (se cayo el server :()
__________________
Internet Explorer SuckS
Download FireFox
  #13 (permalink)  
Antiguo 25/07/2006, 08:35
 
Fecha de Ingreso: agosto-2005
Ubicación: Argentina, Capital Federal
Mensajes: 435
Antigüedad: 18 años, 8 meses
Puntos: 2
Es buena idea, no se me había ocurrido y tardé en avivarme de lo que hacías (dormir poco me deja así).

Saludos!
__________________
R4DS en español | R4DS en inglés
  #14 (permalink)  
Antiguo 25/07/2006, 11:46
Avatar de SiR.CARAJ0DIDA  
Fecha de Ingreso: junio-2004
Ubicación: Acá
Mensajes: 1.166
Antigüedad: 19 años, 9 meses
Puntos: 4
que bueno, otra vez victima de la estupidez del IE, al hacer asi actualiza el historial pero cuando hago click en atras/adelante el idiota no actualiza la location... se ve que cambia pero el valor sigue siendo el anterior......

acabo de probar con safari y pasa lo mismo
__________________
Internet Explorer SuckS
Download FireFox

Última edición por SiR.CARAJ0DIDA; 25/07/2006 a las 12:11
  #15 (permalink)  
Antiguo 25/07/2006, 15:37
Avatar de el_javi  
Fecha de Ingreso: marzo-2005
Ubicación: MAdrid
Mensajes: 844
Antigüedad: 19 años
Puntos: 10
Buenas noches compañeros.

Os comunico que estoy trabajando en todo lo que hemos estado hablando, y pinta muy muy bien.

Actualmente, tengo hecho mi "pseudo" controlador de eventos para el cambio de URL (anclas).

Como bien dijo nuestro amigo zaqpz con un setInterval se puede preparar una función que nos compruebe la URL donde estamos y si hay cambio, al milisegundo siguiente, actuar sobre dicho parámetro.

Como habíamos hablado, y como nos recalcó SiR.CARAJ0DIDA, los enlaces cargan según el formato
<a name="link1" href="#link1">Click me!</a>
<a name="link2" href="#link2">Click me!</a>
<a name="link3" href="#link3">Click me!</a>

SiR.CARAJ0DIDA: no había probado lo del botón de atras y alante... pero es cierto.. nuestro maldito IE nos fastidia todo lo bonito que iba el tema...

Joder.. ya iba viento en popa.. y con una muy buena visión del tema.. todo me estaba funcionando correctamente.. excepto ese detalle...

Creeis que podremos sacar alguna manera para que esto no nos ocurra?...

Cuando termine de desarrollar esta parte de la Web, con la metodología que hemos estado hablando (a expensas de este nuevo problema) la colgaré online, para que la veais, y me deis opiniones de desarrollo y funcionalidad.

Espero que todos juntos, como hasta ahora, podamos sacar más ideas para el desarrollo éste, y para el nuevo problema planteado...

Gracias a todos por contestar y seguir ahy.. y adelante con el nuevo reto

Os sigo leyendo

  #16 (permalink)  
Antiguo 25/07/2006, 16:55
 
Fecha de Ingreso: agosto-2005
Ubicación: Argentina, Capital Federal
Mensajes: 435
Antigüedad: 18 años, 8 meses
Puntos: 2
Parece que no queda otra que aplicar la solución de los iframes. Ya estuve leyendo bastante al respecto y creo haber entendido la idea. En las próximas horas les aviso si hubo avance.

Saludos.
__________________
R4DS en español | R4DS en inglés
  #17 (permalink)  
Antiguo 26/07/2006, 00:41
Avatar de NzO
NzO
 
Fecha de Ingreso: abril-2005
Mensajes: 153
Antigüedad: 19 años
Puntos: 3
Holas, depues de releerlo varias veces no entiendo porque necesitas un setInterval para que vaya recogiendo el ancla de la url.

Se supone que tu tienes:
<a href="#fabricantes_1">Fabricante 1</a>
<a href="#fabricantes_23">Fabricante 2</a>
<a href="#fabricantes_12">Fabricante 3</a>
<a href="#fabricantes_78">Fabricante 4</a>

Para que quieres el setinverval si la url solo va a cambiar cuando el usuario clické.
<a href="#fabricantes_1" onClick="tufuncion(this.href)">Fabricante 1</a>
<a href="#fabricantes_23" onClick="tufuncion(this.href)">Fabricante 2</a>
<a href="#fabricantes_12" onClick="tufuncion(this.href)">Fabricante 3</a>
<a href="#fabricantes_78" onClick="tufuncion(this.href)">Fabricante 4</a>
No lo entiendo :/

El tema del boton de atras es una "jodienda" en su momento busque mucha informacion acerca de eso, pero todo lo que encontraba eran cutre-soluciones. Asi que lo abandoné. Lo unico que me ha sorprendido al verlo es como lo hacen en www.backbase.com. Como tienen su propio lenguaje que es sustituido con DOM supongo que haran iframes ya que pueden meter lo que quieran, porque otra solucion no veo. Y para el tema de los links de anclas en IE crearan sus anclas correspondientes para que actue en IE.
__________________
NzO=EnZo
isiAJAX & isiXML hechos el uno para el otro.
  #18 (permalink)  
Antiguo 26/07/2006, 01:43
 
Fecha de Ingreso: agosto-2005
Ubicación: Argentina, Capital Federal
Mensajes: 435
Antigüedad: 18 años, 8 meses
Puntos: 2
Cita:
Iniciado por NzO
Para que quieres el setinverval si la url solo va a cambiar cuando el usuario clické.
<a href="#fabricantes_1" onClick="tufuncion(this.href)">Fabricante 1</a>
<a href="#fabricantes_23" onClick="tufuncion(this.href)">Fabricante 2</a>
<a href="#fabricantes_12" onClick="tufuncion(this.href)">Fabricante 3</a>
<a href="#fabricantes_78" onClick="tufuncion(this.href)">Fabricante 4</a>
No lo entiendo :/
Sucede que cuando el usuario hace click en esos vínculos, como tu bien has dicho es muy sencillo detectar el cambio de URL para traer el nuevo contenido, pero imaginate esto: acabo de entrar al sitio, hice click en "Fabricante 1" y después en "Fabricante 2"; ahora que estoy viendo información del Fabricante 2 quiero volver atrás, por lo que apreto el botón correspondiente del navegador. La URL cambió, pero ¿como lo detecto para traer el contenido del "Fabricante 1"? La respuesta sería "revisando la URL cada cierto tiempo".
Resulta que IE tiene varios problemas con esto. Primero que si el ancla no existe en el documento directamente no agrega "ese click" al historial. Entonces se te puede ocurrir hacer algo similar a lo que expone SiR.CARAJ0DIDA, pero resulta también que si bien de esa forma los clicks se agregan al historial, cuando volvemos hacia atrás parece que el window.location.href no se actualiza con la nueva URL.
Es por ello que hay que hacer algo poco ortodoxo, como agregar un iframe, pero que funciona.

A continuación les dejo un par de funciones que trabajan de la siguiente forma: si el navegador es IE, se crea un iframe al cuál con cada click en un link se le cambia su atributo src. La idea es que se verifique constantemente hacia a donde apunta ese iframe; dentro del iframe existe la función getLocation que es la encargada de darnos esa información (no podemos saber a donde apunta obteniendo su atributo src ya que cuando se navega con los botones de atrás y adelante este atributo no se modifica como cuando se clickea en un link). Cuando se detecta un cambio en su location es porque el contenido de nuestro sitio debe cambiar.
Por otro lado, si el navegador no es IE, trabajamos simplemente con anclas como se venía hablando a lo largo del post.
Parte de la idea del iframe la tomé de http://www.contentwithstyle.co.uk/Articles/38/ aunque verán que el código que posteo a continuación es bastante mas sencillo.

index.php
Código PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<
html>
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<
title>AJAX</title>
<
script language="javascript">
function 
inicializar()
{
    var 
navegador=navigator.userAgentisIE=false;
    if(
navegador.indexOf("MSIE")>=&& navegador.indexOf("Opera")==-1
    {
        
// IE
        
isIE=true;
        var 
navIframe=document.createElement("iframe"); navIframe.id="nav"navIframe.name="nav";
        
navIframe.src="iframe.php"navIframe.style.display="none";
        
document.body.appendChild(navIframe);
    }
    
source="";
    
setInterval("verificaLocation()"1000);
}

function 
nuevoContenido(hash)
{
    if(
isIEdocument.getElementById("nav").src="iframe.php?hash="+hash
    
else window.location.hash="#"+hash;
}

function 
verificaLocation()
{
    if(
isIEnewSource=nav.getLocation(); 
    else 
newSource=window.location.href;
    
    if(
source!=newSource)
    {
        
source=newSource;
        
alert(source);
        if(
isIEhashSeter(newSource);
    }
}

function 
hashSeter(string)
{
    var 
comienzo=string.indexOf("hash=");
    if(
comienzo!=-1)
    {
        
comienzo+=5;
        var 
cantidad=string.indexOf("&"comienzo)-comienzo; if(cantidad<=-1cantidad=string.length;
        
window.location.hash="#"+string.substr(comienzocantidad);
    }
    else 
window.location.hash="";
}
</script>
</head>

<body onLoad="inicializar();">
<a href="javascript:nuevoContenido('1')">Link 1</a><br>
<a href="javascript:nuevoContenido('2')">Link 2</a><br>
<a href="javascript:nuevoContenido('3')">Link 3</a>
</body>
</html> 
iframe.php
Código PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title><?=$_SERVER['QUERY_STRING']?></title>
<script type="text/javascript">
function getLocation() 
{
    return "<?="http://".$_SERVER["SERVER_NAME"].$_SERVER["PHP_SELF"]."?".$_SERVER["QUERY_STRING"]?>";
}
</script>
</head>

<body>
</body>
</html>
Tiene algunas líneas que usé para debuggear, pero supongo que como ejemplo puede resultar útil. Funciona en IE, Opera 8 y 9, Firefox, Netscape y en los demás no lo he probado.

Saludos!
__________________
R4DS en español | R4DS en inglés

Última edición por zaqpz; 26/07/2006 a las 02:00
  #19 (permalink)  
Antiguo 26/07/2006, 03:08
Avatar de el_javi  
Fecha de Ingreso: marzo-2005
Ubicación: MAdrid
Mensajes: 844
Antigüedad: 19 años
Puntos: 10
Buenos días a tod@s.

Hay una cosa que no me ha quedado del todo clara..

Se supone, que el setInterval, lo estábamos plantenado para que no se usasen llamadas directas a Javascript para cargar los datos.
La finalidad era que los buscadores, pudiesen navegar por medio de nuestras anclas... entonces tengo una duda con lo que ha dicho NzO
Cita:
<a href="#fabricantes_1" onClick="tufuncion(this.href)">Fabricante 1</a>
<a href="#fabricantes_23" onClick="tufuncion(this.href)">Fabricante 2</a>
<a href="#fabricantes_12" onClick="tufuncion(this.href)">Fabricante 3</a>
<a href="#fabricantes_78" onClick="tufuncion(this.href)">Fabricante 4</a>
Poniendo a la vez un Href y un onclick, se ejecutan las dos cosas a la vez?
Si se ejecutan las dos cosas a la vez, los buscadores, que van a intentar seguir? el href o el onclick?

Penalizará o bajará la indexación por tener las dos cosas?

Se suponia que todo esto lo estábamos plantenado para que la navegación fuese por medio de anclas, para que una web en ajax fuese indexable...

Un saludo

  #20 (permalink)  
Antiguo 26/07/2006, 06:13
Avatar de SiR.CARAJ0DIDA  
Fecha de Ingreso: junio-2004
Ubicación: Acá
Mensajes: 1.166
Antigüedad: 19 años, 9 meses
Puntos: 4
usar onclick es estupido porque ademas de no poder ir atras/adelante tampoco permite agregar a favoritos o copiar una url...
Ahora voy a probar lo del iframe y les cuento. Aca en el laburo tengo una mac para probar con IE 5.2 y Safari, el que tenga algo para probar que ponga el link y cuando tenga tiempo lo pruebo y les cuento.
__________________
Internet Explorer SuckS
Download FireFox
  #21 (permalink)  
Antiguo 26/07/2006, 11:02
Avatar de NzO
NzO
 
Fecha de Ingreso: abril-2005
Mensajes: 153
Antigüedad: 19 años
Puntos: 3
Pero a ver si nos aclaramos, que discutimos la posibilidad de ir hacia adelanta/atras o links para que google indexe? Yo creo que es lo segundo. Que es el motivo del post.

el_javi Si hace las dos cosas y es el mejor metodo que veo para lo que quieres hacer.

SiR.CARAJ0DIDA Dime como lo harias porque otra manera... No se me ocurre.
__________________
NzO=EnZo
isiAJAX & isiXML hechos el uno para el otro.
  #22 (permalink)  
Antiguo 26/07/2006, 11:51
Avatar de SiR.CARAJ0DIDA  
Fecha de Ingreso: junio-2004
Ubicación: Acá
Mensajes: 1.166
Antigüedad: 19 años, 9 meses
Puntos: 4
bueno aca pueden ver la pagina en la que estoy trabajando: http://www.eye-speak.com.ar/2k6
obviamente no esta terminada y van a encontrar errores, pero la base esta y funciona en ie/opera/firefox/safari
__________________
Internet Explorer SuckS
Download FireFox
  #23 (permalink)  
Antiguo 26/07/2006, 12:53
 
Fecha de Ingreso: agosto-2005
Ubicación: Argentina, Capital Federal
Mensajes: 435
Antigüedad: 18 años, 8 meses
Puntos: 2
Cita:
Iniciado por SiR.CARAJ0DIDA
bueno aca pueden ver la pagina en la que estoy trabajando: http://www.eye-speak.com.ar/2k6
obviamente no esta terminada y van a encontrar errores, pero la base esta y funciona en ie/opera/firefox/safari
Que bueno que funcione en Safari, era al que mas miedo le tenía.

En un principio discutíamos la posibilidad de que los buscadores accedan a nuestro contenido, después agregamos la posibilidad del bookmarking y terminamos pensando en como hacer todo eso más habilitar el back button.
Estuve revisando un poco el tema de Google y por lo que ví si tenemos una URL que es index.html#news el buscador indexa solamente index.html, por lo que estos métodos no servirían demasiado (si alguien confirma si esto es así mejor, o quizá se pueda preguntar en el foro de Posicionamiento).

[EDIT] Acabo de verificar que desde lenguaje del servidor no podemos acceder al hash. Parece ser que la indexación se complica un poco.
__________________
R4DS en español | R4DS en inglés

Última edición por zaqpz; 26/07/2006 a las 14:20
  #24 (permalink)  
Antiguo 26/07/2006, 17:04
Avatar de SiR.CARAJ0DIDA  
Fecha de Ingreso: junio-2004
Ubicación: Acá
Mensajes: 1.166
Antigüedad: 19 años, 9 meses
Puntos: 4
?? como q no?
http://ar2.php.net/manual/es/function.parse-url.php

igual yo lo hice de una forma mucho mas sencilla el hack del iframe para ie, nada que ver el codigo que pusieron mas arriba, por ejemplo esta funcion se puede resumir asi:

function getLocation()
{
return "<?=$_SERVER["REQUEST_URI"]?>";
}

simeplemente en el iframe cuando se carga hago parent.location.hash = '#<?=$_GET['hash']?>';
y ademas le mando por GET el titulo de la pagina padre para que en el historial no salga cualquier cosa.
__________________
Internet Explorer SuckS
Download FireFox
  #25 (permalink)  
Antiguo 26/07/2006, 20:57
 
Fecha de Ingreso: agosto-2005
Ubicación: Argentina, Capital Federal
Mensajes: 435
Antigüedad: 18 años, 8 meses
Puntos: 2
Cita:
Iniciado por SiR.CARAJ0DIDA
?? como q no?
http://ar2.php.net/manual/es/function.parse-url.php

igual yo lo hice de una forma mucho mas sencilla el hack del iframe para ie, nada que ver el codigo que pusieron mas arriba, por ejemplo esta funcion se puede resumir asi:

function getLocation()
{
return "<?=$_SERVER["REQUEST_URI"]?>";
}

simeplemente en el iframe cuando se carga hago parent.location.hash = '#<?=$_GET['hash']?>';
y ademas le mando por GET el titulo de la pagina padre para que en el historial no salga cualquier cosa.
La función parsea perfectamente una URL, pero ¿cómo se con que hash ingresó un usuario a mi web con un lenguaje del servidor (PHP)?
Pregunto esto porque miré todos los índices del array $_SERVER y ninguno me arrojó el hash.

Saludos!
__________________
R4DS en español | R4DS en inglés
  #26 (permalink)  
Antiguo 27/07/2006, 06:51
Avatar de SiR.CARAJ0DIDA  
Fecha de Ingreso: junio-2004
Ubicación: Acá
Mensajes: 1.166
Antigüedad: 19 años, 9 meses
Puntos: 4
es verdad no se puede, de todas formas ni es necesario.... le mandas el hash por $_GET como hice yo.
__________________
Internet Explorer SuckS
Download FireFox
  #27 (permalink)  
Antiguo 27/07/2006, 07:17
Avatar de B**
B**
 
Fecha de Ingreso: enero-2006
Ubicación: Monterrey,Mexico
Mensajes: 952
Antigüedad: 18 años, 3 meses
Puntos: 3
Disculpen... a q se refieren cuando mencionan "hash" ?
__________________
-URL= Go PHP5.
-Age=22.
-Learning=PHP,J2EE,Struts,MAMBO,C++,JSON,AJAX,XHTML ,CSS.
  #28 (permalink)  
Antiguo 27/07/2006, 09:29
Avatar de SiR.CARAJ0DIDA  
Fecha de Ingreso: junio-2004
Ubicación: Acá
Mensajes: 1.166
Antigüedad: 19 años, 9 meses
Puntos: 4
http://www.forosdelweb.com/showthread.php?t=411679#hash
__________________
Internet Explorer SuckS
Download FireFox
  #29 (permalink)  
Antiguo 03/08/2006, 21:50
 
Fecha de Ingreso: agosto-2005
Ubicación: Argentina, Capital Federal
Mensajes: 435
Antigüedad: 18 años, 8 meses
Puntos: 2
Me he tomado el atrevimiento de elaborar un pequeño artículo sobre lo que se ha tratado en este tema donde he intentado recopilar todo el conocimiento que ha ido surgiendo. Su URL es http://www.formatoweb.com.ar/ajax/fi...ookmarking.php

Espero que a alguien le resulte útil.
Saludos.
__________________
R4DS en español | R4DS en inglés
  #30 (permalink)  
Antiguo 03/08/2006, 22:12
Avatar de B**
B**
 
Fecha de Ingreso: enero-2006
Ubicación: Monterrey,Mexico
Mensajes: 952
Antigüedad: 18 años, 3 meses
Puntos: 3
Genial zaqpz..!! lo checare...
PD:Los q enseñan , son los q mas aprenden !
__________________
-URL= Go PHP5.
-Age=22.
-Learning=PHP,J2EE,Struts,MAMBO,C++,JSON,AJAX,XHTML ,CSS.
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 08:48.