Javascript 在Firefox中,设置window.location.hash时可以避免默认操作吗?
我有一个带有标题和内容的页面 收割台有Javascript 在Firefox中,设置window.location.hash时可以避免默认操作吗?,javascript,jquery,firefox,Javascript,Jquery,Firefox,我有一个带有标题和内容的页面 收割台有位置:固定;高度:200px,内容如下 在标题中,我有一个链接插件,它使用jQueryanimate。在这里,我稍微修改了插件,以考虑到200px的偏移量。这在Chrome和Safari中运行良好 不过,Firefox中没有。插件工作正常,滑动到正确的位置,直到调用window.location.hash=element。然后,Firefox返回到默认行为,将元素设置在页面顶部(因此忽略了由于页眉而产生的偏移量——这是我描述的第一个问题) 我知道Firefo
位置:固定;高度:200px
,内容如下
在标题中,我有一个链接插件,它使用jQueryanimate
。在这里,我稍微修改了插件,以考虑到200px的偏移量。这在Chrome和Safari中运行良好
不过,Firefox中没有。插件工作正常,滑动到正确的位置,直到调用window.location.hash=element
。然后,Firefox返回到默认行为,将元素设置在页面顶部(因此忽略了由于页眉而产生的偏移量——这是我描述的第一个问题)
我知道Firefox3.6实现了一个onhashchange
监听器。我根据文档window.onhashchange=function(){}
进行了重写,它确实调用了该文档,但它继续触发默认操作,即在窗口顶部设置元素,忽略我的标题。我怎样才能解决这个问题
(否则,在这些“固定标题”的情况下是否可以设置窗口偏移量?如果您无法找到防止Firefox的OhashChange
行为的方法,那么您最好以不同的方式解决问题。有几点建议:
修改anchorAnimate以从不设置window.location.hash(注释掉第34行)。这样做的问题是,url永远不会更改,用户将无法为直接指向该div的url添加书签或复制url
编写您自己的代码(或修改anchorAnimate)以执行以下操作:
var currentScroll = $('html, body').scrollTop();
window.location.hash = 'myAnchor';
$('html, body').scrollTop(currentScroll)
.animate({ scrollTop: destination - 200 });
这将设置定位点,但会立即将您滚动回浏览器以前所在的位置。从那里,您可以设置动画到任何所需的滚动位置
我登录了Firefox(对于其他浏览器,我也非常确定),用户不会看到任何滚动变化