Javascript 窗口位置在IE7/8中工作不正常
我有一个里面有a的div。我想点击div并遵循与a相同的url。这是HTML: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> &
<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;
对你的问题不是很直接的回答,但我有两个建议
$(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=href代码>window.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;