Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript window.location=#锚不';我不在IE工作_Javascript_Internet Explorer_Hash_Anchor_Window.location - Fatal编程技术网

Javascript window.location=#锚不';我不在IE工作

Javascript window.location=#锚不';我不在IE工作,javascript,internet-explorer,hash,anchor,window.location,Javascript,Internet Explorer,Hash,Anchor,Window.location,在这张地图上: 我在顶部有一个锚,我希望页面在点击链接时跳转到锚 我目前正在使用 window.location = '#top'; 它在FF、Opera和Chrome中可以正常工作,但在IE7中不能 我尝试了所有的排列,比如window.location.hash和window.location.assign(),还尝试了scrollIntoView(true)和focus() 我怎样才能使它在IE中工作 编辑:似乎什么都不管用,这让我觉得这不是语法问题,而是关于JS。。。这是单击事件处理

在这张地图上:

我在顶部有一个锚,我希望页面在点击链接时跳转到锚

我目前正在使用

window.location = '#top';
它在FF、Opera和Chrome中可以正常工作,但在IE7中不能

我尝试了所有的排列,比如window.location.hash和window.location.assign(),还尝试了scrollIntoView(true)和focus()

我怎样才能使它在IE中工作

编辑:似乎什么都不管用,这让我觉得这不是语法问题,而是关于JS。。。这是单击事件处理程序。。。可能是因为它返回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中的window.location.hash断点,这些断点是由于通过HTTP“location”标头进行页面重定向而加载的。解决方案是返回一个带有Javascript的页面,该页面本身将执行重定向。请参见Joe Lapp的答案。

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

编辑:避免出现两个哈希的可能性

window.location.href = '#top';
如果这不起作用,请尝试完整的URL

window.location.href = 'http://domain.com/my.html#top';
该属性分为多个属性-
href
只是其中一个属性

另一个,hash,就是你要找的

top.location.hash = 'top';
您也可以不使用location/href来执行此操作-只需使用


我在生产中有这个代码,它在IE7中运行良好

location.hash = "#top";
然而,如果你只是试图滚动到顶部,这应该会容易得多

window.scrollTo(0, 0);

除了IE7和IE8(至少在Vista上)之外,我在所有浏览器中都遇到了windows.location.hash的问题。经过多次实验,我发现页面重定向破坏了散列分配

如果从通过HTTP“location”标头重定向而加载的页面中为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>

window.location=“\uuuu重定向\u位置\uuuuu”;
这可以解释为什么有些人在设置哈希时遇到问题,而有些人没有,但我不知道线程的发起人正在重定向


我还应该指出,我不能只使用scrollTo(),因为我的目的是在不重新加载页面的情况下从地址栏中删除哈希标记,而不是滚动。

在添加哈希之前,必须检查哈希。我就是这样做的


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

是的,您需要+=您忘记了URL中可能有一个查询字符串。尽管从未尝试在查询字符串后使用#。不知道它是否会起作用。如果你这样做,它会不会在URL末尾添加#top multiple time?@Nordes:我假设他没有使用锚的
href
。我在使用href做其他事情,这很奇怪,但我需要用Javascript来做。这似乎会多次将“#top”添加到URL中,但我会尝试一下。我已经进行了编辑,以避免URL中出现两个哈希的可能性真的吗?对我有用。IE 7.0.5730.13。仅供参考,你不需要为#top to work指定锚点-浏览器会自动读取。或者,您可以使用
top.scrollTo(0,0)
具体来说,任何与任何元素id不对应的散列都会自动将您带到页面顶部(即不仅仅是
#top
)。它可以是
#top
#gogogadgetscollup
或者只是
#
。我应该澄清一下,我最终使用了scrollTo(0,0)。我觉得有点傻,我不知道这个方法-但它确实有效!
<html>
<head>
    <meta http-equiv="refresh" content="0; url=__REDIRECT_LOCATION__">
    <script>window.location = "__REDIRECT_LOCATION__";</script>
</head>
</html>