2009-08-05 4 views
1

Il existe un objet window.history dans javascript.Obtenir l'historique complet de l'URL à l'aide de javascript

Il est possible d'obtenir longueur de l'histoire à l'aide window.history.lenght ou rediriger vers la page précédente/url suivante dans l'histoire en utilisant history.go (N)

Y at-il astuce pour obtenir l'URL de la objets d'histoire? Comme je vois ce n'est pas possible avec l'objet d'histoire, parce que les urls ne sont même pas en lecture seule.

Avez-vous des idées?

+4

La première question est pourquoi vous avez besoin d'une telle chose. – rahul

+0

Pour les statistiques du site. J'utilise le réseau de bannière et si quelqu'un vient de img.doubleclick.com je veux voir quelle était la vraie URL du site qui m'apporte le visiteur actuel. – Zelid

+4

Cette question semble être hors sujet car il s'agit d'une demande de support avec le réseau de bannières doubleclick. – hakre

Répondre

12

Cela n'est pas possible et ne le sera jamais dans les principaux navigateurs. Ce serait une violation de la vie privée et same origin policy grave.

+0

Au moins la lecture de l'historique (session en cours) dans la portée actuelle de Same-Origin-Policy serait bien ;-) – NicBright

4

L'historique du navigateur peut être déterminé dans javascript en détectant la couleur du lien. Cela ne peut fonctionner qu'en essayant différentes URL et nous ne pouvons pas obtenir tous les objets d'histoire.

<script> 
function urlvis(url){ 
document.getElementById('gurl').innerHTML="<a id=geturl href="+url+" >^</a>"; 
x=document.getElementById('geturl'); 
color=document.defaultView.getComputedStyle(x,null).getPropertyValue('color'); 
if (color=="rgb(85, 26, 139)") visited=true; else visited=false; 
document.getElementById('gurl').innerHTML=""; 
return visited;} 
</script> 
<div id=gurl></div> 

Maintenant, créez un élément caché dans votre page qui peut être contrôlé par innerHTML. NOTE Cette méthode a seulement été testée pour fonctionner avec Firefox.

EDIT:

Bien que ce soit une méthode de travail une fois, la plupart des navigateurs plus récents ne vous permettra pas d'obtenir une lecture précise de style calculé d'un lien. J'ai remarqué ce changement à partir de Firefox 4. Il est temps de toute façon, c'était un problème de confidentialité.

+0

Voici ce que les pirates utilisent pour cross-site – Zelid

+2

J'ai testé cela dans Firefox 6. Cela ne fonctionne pas. Toutes les URL seront de la même couleur en FF6. L'exemple ci-dessus fonctionne sur FF3.6 et FF4.0. –

+2

Oui, c'est du passé. Il y avait un exploit via les couleurs des liens CSS (liens visités,: visités) que les vendeurs de navigateurs avaient supervisés et n'ont pas abordés. Ceci * devrait * être réparé maintenant, mais gardez à l'esprit que l'utilisation d'Internet n'est pas bonne pour votre vie privée et votre sécurité informatique. Un moyen facile de se protéger contre de telles attaques (et d'espionner des sites Web) est de désactiver le javascript qui a été compliqué avec Firefox en raison des exigences de l'industrie et des partenaires publicitaires. – hakre

Questions connexes