2010-07-08 3 views
0

J'ai des éléments sur ma page qui sont chargés via un appel ajax. Je voudrais que l'URL du navigateur de l'utilisateur change lorsqu'il clique sur un élément. Par exemple, ma page a une liste d'animaux:Réécrire l'url dans la barre d'adresse du navigateur aveC#?

Horse 
Cow 
Pig 

lorsque l'utilisateur clique sur l'un de ces éléments, je veux mettre à jour l'URL dans la barre d'adresse de leur navigateur (pas recharger la page):

http://www.mysite.com#Horse 
http://www.mysite.com#Cow 
http://www.mysite.com#Pig 

Je pense que c'est autorisé, en mettant le symbole # dans l'adresse sans recharger la page. Y a-t-il un moyen de le faire en jquery?

Merci

Répondre

6

Vous pouvez le faire dans la vanille JS, pas besoin de jQuery en utilisant location.hash, comme ceci:

window.location.hash = "Cow"; 
+1

Notez que '.hash' est une partie de' .url' pour la page. –

+0

Cool merci qui fonctionne très bien. – user291701

+0

@Loadmaster - '.href', peut-être? Je ne pense pas que '.url' fonctionne dans les navigateurs que j'ai essayés. – Matchu

4

Tu ne peux pas avoir l'élément lié au hachage?

<a href="#Pig">Pig</a> 
1

Soyez averti! window.location.hash n'est pas implémenté dans tous les navigateurs! Un correctif pour cela ressemblerait à:

if (!("hash" in window.location)) { 
    window.location.__defineGetter__("hash", function() { 
    if (location.href.indexOf("#") == -1) return ""; 
    return location.href.substring(location.href.indexOf("#")); 
    }); 
    window.location.__defineSetter__("hash", function(v) { 
    if (location.href.indexOf("#") == -1) 
     location.href += v; 
    location.href = location.href.substring(0, location.href.indexOf("#")) + v; 
    }); 
} 

Ceci n'est pas testé, donc testez-le d'abord! Mon conseil serait d'utiliser:

<a href="#Pig">Oink!</a> 

pour changer les URL. (En passant, le comportement de window.location.hash qui est implémenté ici est le même que celui que vous attendez avec les navigateurs qui l'implémentent.Vous devez ajouter le caractère de hachage à l'url.)

+0

C'est une nouvelle pour moi ... par curiosité, quel navigateur ne supporte pas? –

+0

Hmmm ... Je me souviens de ne pas avoir eu de support dans un navigateur ou un autre ... Ou c'était le fait qu'il était incohérent entre eux ... J'oublie. Je me souviens que je devais le faire pour l'un de mes projets car il n'était pas là ... – Tim

1

Je chercherais à utiliser SWFAddress linking .... fonctionne de la même manière en JavaScript que ActionScript

Questions connexes