Window.location ne fonctionne pas correctement dans IE7 / 8

J'ai un div qui a un à l'intérieur. Je veux cliquer sur la div et suivre la même URL que l'a. C'est le HTML:

<div class="overview white getchildurl"> <p class="w70"> 05-02-2011 </p> <a class="button" href="details/">Details</a> <span class="clear"></span> </div> 

Et j'ai ce script:

 $('.getchildurl').each(function() { $(this).click(function() { var href = $(this).children('a').first().attr('href'); window.location = href; }); }); 

Cela fonctionne dans Firefox 3.6, Chrome, Safari, mais pas dans IE7 et IE8. Il recharge la page, mais reste sur la même page. J'ai vérifié le var href, il a la bonne URL, mais il n'y va pas. Qu'est-ce que je fais mal?

Merci.

EDIT: Faire en sorte qu'une URL absolue a fonctionné. C'est le nouveau script:

 $('.getchildurl').each(function() { $(this).click(function() { var href = $(this).children('a').first().attr('href'); var host = window.location.hostname; window.location = 'http://' + host + '/' + href; }); }); 

Je publie ceci comme une réponse différente parce que c'est une réponse différente. Comment résoudre le problème avec JavaScript au lieu de travailler avec HTML et CSS.

Essayez de modifier votre JavaScript pour afficher et assurez-vous que les valeurs sont ce que vous pensez être

 $(this).click(function() { var href = $(this).children('a').first().attr('href'); alert(href) alert(href.length) window.location = href; }); 

Cela affichera le href et la longueur de href . Assurez-vous que la longueur correspond. Si la longueur est trop grande, cela signifie qu'il y a des personnages cachés.

Si vous déterminez que le problème est dû à une syntaxe, de nombreuses corrections / conversions d'URL peuvent être effectuées avec JavaScript. Par exemple, en supprimant une barre oblique de fin lorsque l'on peut être fait avec

 $(this).click(function() { var href = $(this).children('a').first().attr('href'); window.location = href.replace(/\/$/, ''); }); 

En outre, l'URL pourrait être convertie en une URL absolue en utilisant JavaScript si c'est ce qui va résoudre le problème. Et tout autre personnage gênant ou même invisible peut être supprimé ou remplacé.

Pouvez-vous publier une page Web sur Internet que nous pouvons accéder pour voir le problème sur nos propres copies d'IE? Pouvez-vous publier un fichier HTML que nous pouvons copier sur notre machine et afficher dans un navigateur? Votre commentaire sur l'autre question me dit que vous avez une sorte de DOCTYPE strictement XHTML. Si l'un d'entre nous peut faire passer le problème à notre terme, il est plus probable qu'il soit réparé.

Comme je l'ai mentionné dans mon commentaire, je n'en suis pas sûr à 100% (comment IE7 + 8 gère l'objet .location ), mais après tout, c'est juste un objet.

Essayez de définir explicitement la propriété href dans l'objet de location :

 window.location.href = href; 

Bien que le sujet soit vieux, il n'est pas obsolète. Je viens d'avoir le même problème.

 window.location = href; 

Fonctionne bien, si vous mettez une autre commande après cela.

 window.location = href; return false; 

Cela fonctionne pour moi et redirige avec l'URL correcte. J'espère que cela aide les autres avec le même problème.

Pas exactement une réponse directe à vous, mais j'ai deux suggestions

  1. Vous pouvez simplement essayer de voir si jQuery va le gérer pour vous

     $(this).children('a').first().click() 

    Edit: Cela n'a pas résolu le problème

  2. Aussi, vous voudrez peut-être tout faire <div dans une <a étiquette avec style="display: block; text-decoration: none" . Vous pouvez utiliser les couleurs de la police et les souligner pour que le texte soit à l'intérieur comme vous le souhaitez. En outre, cette solution ne nécessite pas de JavaScript. Et il rend également l'ensemble du spec div comme focalisé au lieu de juste le a ou rien du tout.