[removed]的= #anchor在IE中不起作用([removed] = #anchor do

2019-06-26 15:51发布

在这张地图上:

http://web.pacific.edu/documents/marketing/campus-map/version%202/stockton-campus-2.0.htm

我有在顶部的锚,我想点击一个链接时,页面跳转到锚。

我目前使用

window.location = '#top';

它的工作原理如预期FF,Opera和Chrome浏览器,但不是在IE 7。

我试着像window.location.hash和window.location.assign(),也scrollIntoView所有排列(真)和焦点()。

我怎样才能使它在IE浏览器?

编辑 :似乎没有任何工作,这让我觉得它不是语法,但一些关于JS ......这里是click事件处理程序...难道是因为它返回false? 我抓救命稻草。

// Click handler for each location link
$('#index a').click(function()
{
    hideMarkers();
    location.href = location.href + "#top";
    var marker = showMarker( $(this).attr('data-id') );
    GEvent.trigger( marker, "click" );
    return false;
});

编辑 :分配可在IE7和IE8的网页上已装载为通过HTTP“位置”头页面重定向的结果window.location.hash休息。 解决的办法是使用Javascript返回一个页面,它本身将执行重定向。 见乔·拉普答案。

Answer 1:

我在此生产的代码,它在IE7中工作正常...

location.hash = "#top";

不过,如果你只是试图滚动到顶部,这应该是一个容易得多...

window.scrollTo(0, 0);


Answer 2:

location的对象被分成几个属性- href只是其中之一

另外一个, hash ,是你在找什么。

top.location.hash = 'top';

您也可以做到这一点,而无需使用位置/ HREF在所有-只需使用scrollTo()

top.scrollTo( 0, 0 );


Answer 3:

我还与windows.location.hash在所有浏览器,但IE7和IE8(至少在Vista)的工作问题。 很多实验后,我发现网页重定向被打破哈希分配。

如果您分配一个值从已加载通过HTTP“位置”报头重定向的结果页面内windows.location.hash将发生在IE7或IE8的错误。

发现在这之后,我能在别处找到一个解决StackOverflow上( 见这里 )。 该解决方案是通过JavaScript浏览器重定向。 在这里,我转贴来自其他StackOverflow的页面的解决方案:

<html>
<head>
    <meta http-equiv="refresh" content="0; url=__REDIRECT_LOCATION__">
    <script>window.location = "__REDIRECT_LOCATION__";</script>
</head>
</html>

这可以解释为什么有些人具有设置散列问题,有些人没有,但我不知道该线程的鼻祖被重定向。

我还要指出的是,我不能只使用scrollTo(),因为我的目的是去除从地址栏中的哈希标签无需重新加载页面,而不是滚动。



Answer 4:

location.href = location.href.split("#")[0] + "#top"

编辑:避免以往任何时候都具有两个散列的可能性。



Answer 5:

你必须追加前检查哈希值。 我这个做了,

window.location = ((location.href).indexOf('#') == -1 ? location.href + "#top" : location.href);



Answer 6:

window.location.href = '#top';

如果这不起作用,请尝试完整的URL

window.location.href = 'http://domain.com/my.html#top';


文章来源: window.location = #anchor doesn't work in IE