window.location在IE7 / 8中无法正常工作

我有一个内部有一个div。 我想点击div并按照与a相同的URL。 这是HTML:

05-02-2011

Details

我有这个脚本:

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

这适用于Firefox 3.6,Chrome,Safari,但不适用于IE7和IE8。 它重新加载页面,但保持在同一页面上。 我检查了var href,它有正确的URL,但不会去那里。 我究竟做错了什么?

谢谢。

编辑:使它成为一个绝对的URL使它工作。 这是新脚本:

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

我将此作为一个不同的答案发布,因为它是一个不同的答案。 如何使用JavaScript解决问题而不是使用HTML和CSS来解决问题。

尝试更改您的JavaScript以显示并确保值是您认为的

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

这将显示hrefhref长度。 确保长度匹配。 如果长度太大,则表示存在隐藏字符。

如果您确定问题是由语法引起的,则可以使用JavaScript完成许多URL修复/转换。 例如,可以在有一个时删除尾部斜杠

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

此外,URL可以使用JavaScript转换为绝对URL,如果这将解决问题。 任何其他麻烦甚至不可见的字符都可以删除或替换。

您是否可以在互联网上发布我们可以访问的网页 ,以便在我们自己的IE副本上查看问题? 您可以发布我们可以复制到我们的机器并在浏览器中查看的HTML文件吗? 你对另一个问题的评论告诉我你有某种XHTML严格的DOCTYPE。 如果我们中的一个人能够在我们的结束时解决问题,那么它更有可能被修复。

正如我在评论中提到的,我不是100%肯定它(IE7 + 8如何处理.location对象),但毕竟它只是一个对象。

尝试在location对象中显式设置href属性:

 window.location.href = href; 

虽然这个话题很古老,但并没有过时。 我刚遇到同样的问题。

 window.location = href; 

如果你之后再放一个命令,那么工作正常。

 window.location = href; return false; 

这对我有用,并使用正确的URL重定向。 希望这可以帮助其他人解决同样的问题。

不完全是你问题的直接答案,但我有两个建议

  1. 您可能只想尝试查看jQuery是否会为您处理它

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

    编辑:这没有解决问题

  2. 另外,您可能只想将整个 in到 tag with style="display: block; text-decoration: none" 。 您可以使用字体颜色和下划线使文本内部显示您想要的内容。 此外,此解决方案不需要JavaScript。 它也使整个div节目集中而不仅仅是a或者根本没有。