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; });
这将显示href
和href
长度。 确保长度匹配。 如果长度太大,则表示存在隐藏字符。
如果您确定问题是由语法引起的,则可以使用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重定向。 希望这可以帮助其他人解决同样的问题。
不完全是你问题的直接答案,但我有两个建议
-
您可能只想尝试查看jQuery是否会为您处理它$(this).children('a').first().click()
编辑:这没有解决问题
-
另外,您可能只想将整个