2010-04-29 30 views
9

Tengo una página llena de enlaces a otra página con anclajes al final (como este: index.html # anchor). En la página a la que apuntan, tengo un script que se supone que debe leer a dónde apunta el anclaje para mostrar algo.Leer URL Anchor en IE

En Firefox funciona perfectamente, pero he notado que IE parece eliminar el #anchor del final de la url, por lo que la secuencia de comandos no puede captar el texto. ¿Hay alguna forma de evitar esto, sin ningún código de servidor?

Respuesta

5

¿Cómo está recibiendo la url?

window.location.hash debería contain the contents of the hash.

+0

Así es como he estado recibiendo en el guión, pero parece IE elimina el hash de la URL una vez que se ha cargado. no estoy seguro de por qué, o incluso si hay una solución. ¡Gracias de cualquier manera! – tominated

0

¿El window.location todavía contiene el ancla en IE, o también se extrae allí? Si todavía no se podía utilizar window.location y dividido en el hash:

var whole = "" + window.location; // location is object, make sure it's a String 
var parts = whole.split('#'); 
var anchor = parts[1]; 
+0

IE no parece mantenerlo en window.location. ¡Gracias por tu idea! – tominated

+0

window.location.href? – wombleton

+0

que tampoco funciona, me temo. Da el mismo resultado que window.location – tominated

0

sólo trato como esto

var url = window.location.search.substring(1) 
    var arr=url.split("#") 
    str=arr[1] 
2

He probado el siguiente código en IE 6, 7 y 8, y el hash correcto se muestra en el cuadro de alerta en todos los casos.

<script type="text/javascript"> 

    function showHash() { 
     var currentUrl = "" + document.location; 
     var hash = ""; 
     var parts = currentUrl.split("#"); 
     if (parts.length > 1) { 
      hash = parts[1]; 
     } 
     alert("the current hash is: " + hash); 
    } 

</script> 

<input type="button" value="Show Hash" onclick="javascript: showHash();" /> 

¿Ese código te sirve?

0

Aquí hay una función que ayuda. Devuelve nulo si no hay ancla. lo coloqué dentro de un util.js, que viene muy bien: D

function getAnchor() { 
    var currentUrl = document.URL, 
     urlParts = currentUrl.split('#'); 

    return (urlParts.length > 1) ? urlParts[1] : null; 
} 
Cuestiones relacionadas