我有一个WordPress网站和锚点的问题。我有一个页面,其中有几个锚点链接到主菜单中。当我在页面本身时,所有锚点工作正常,但如果我在任何其他页面上,它们不起作用,至少不是在所有浏览器中,并且锚点被忽略。
当被告知这是一个铬虫,我发现了这个解决方案:
<script type="text/javascript">
jQuery(window).load(function(){
var hashNum = 0;
if (window.location.hash != ''){
hashNum = window.location.hash.replace("#oneofmanyanchors", "");
console.log('hashNum: ' + hashNum);
};
hashMenu = jQuery('[data-q_id="#oneofmanyanchors"]').offset().top;
jQuery('html,body').animate({
scrollTop: hashMenu
}, 0);
});
</script>
上面的代码正在运行并解决了我在chrome和ff中遇到的问题。
然而我需要这个增加的功能:目前它只处理一个特定的锚点,但是我需要它来处理页面url中的任何锚点,而不仅仅是上面的锚点(锚点用data-q_id属性引用) )。
所以代码需要更新,它从页面URL抓取任何给定的锚点,并在第一页加载后通过jquery转到/滚动到该锚点(一次)。
我如何实现这一目标?
提前致谢!
PS:问题是由于主题与我需要的某个插件不兼容而引起的......
答案 0 :(得分:0)
我认为这应该适用于所有浏览器 - 问题恰巧是什么?
为了在jquery中实现这一点,你应该在文档加载后立即使用javascript滚动到元素/锚点。
所以这样:
$(function() {
location.hash = "#" + hash;
});
我仍然认为你应该找出问题所在,以及在使用问题的解决方法之前,为什么来自其他页面的链接在某些浏览器中不起作用。你的代码会变得越来越混乱。
How to scroll HTML page to given anchor using jQuery or Javascript? 和这里 $(document).ready shorthand