Javascript 窗口位置在IE7/8中工作不正常

Javascript 窗口位置在IE7/8中工作不正常,javascript,jquery,xhtml,Javascript,Jquery,Xhtml,我有一个里面有a的div。我想点击div并遵循与a相同的url。这是HTML: <div class="overview white getchildurl"> <p class="w70"> 05-02-2011 </p> <a class="button" href="details/">Details</a> <span class="clear"></span> &

我有一个里面有a的div。我想点击div并遵循与a相同的url。这是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>
这适用于Firefox3.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;
    });
});

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

尝试在
位置
对象内显式设置
href
属性:

window.location.href = href;

对你的问题不是很直接的回答,但我有两个建议

  • 您可能只想看看jQuery是否能为您处理它

    $(this).children('a').first().click()
    
    编辑:这并没有解决问题


  • 另外,你可能只想把整个
    作为一个不同的答案发布,因为这是一个不同的答案。如何使用JavaScript解决问题,而不是使用HTML和CSS解决问题

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

    $(this).click(function() {
        var href = $(this).children('a').first().attr('href');
        alert(href)
        alert(href.length)
        window.location = href;
    });
    
    这将显示
    href
    href
    长度。确保长度匹配。如果长度太大,则表示存在隐藏字符

    如果您确定问题是由于语法造成的,那么可以使用JavaScript完成许多URL修复/转换。例如,可以使用删除尾随斜杠

    $(this).click(function() {
        var href = $(this).children('a').first().attr('href');
        window.location = href.replace(/\/$/, '');
    });
    
    此外,如果可以解决问题,可以使用JavaScript将URL转换为绝对URL。任何其他麻烦甚至不可见的字符都可以删除或替换


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

    尽管这个话题很老,但它并没有过时。我也有同样的问题

    window.location = href;
    
    如果你在那之后再下一个命令,效果很好

    window.location = href;
    return false;
    

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

    尝试显式设置
    href
    属性<代码>window.location.href=hrefwindow.location.href可能有效!为我工作:你能去那里检查一下吗?尝试以下几点:从“details/”中删除尾部斜杠,
    location.href=href
    ,使用绝对路径。尝试键入
    javascript:window.location='details/';无效(0)也不起作用。它适用于除IE7/8之外的所有浏览器。删除尾随斜杠不是一个选项,url是动态添加的,我不控制它的语法。值得一试,但我从未发现这是一个问题1。我认为这不是一个干净的解决方案。2.这不是一个选项,我减少了示例中的HTML。实际上,div中有更多的块元素,这意味着我必须将其中的所有块元素更改为一个跨度,包括当前的a。那会把事情搞得一团糟。@Gregory:好的,关于第二项:2<代码>div
    s、
    p
    s和其他块标记在a内部就可以了,只要您在外部a上使用display:block。内部的a将被更改为u,因为它不再处理单击操作,它只是为了看起来更好。外部a将处理单击操作。我使用的是严格的doctype,在a中使用块元素不会验证。我喜欢我的代码干净。
    window.location = href;