将滚动位置刷新为当前锚点名称属性

时间:2019-01-07 13:02:54

标签: javascript jquery

Heyo,

所以我有一个main_menu和一些sub_menumain_menu li a[href]链接到不同页面,sub_menu li a[href]链接到每个页面内具有<a name="...">属性(从http://example.com/page到{{3} }。现在,这是一个具有自定义CMS的网站,我无法更改所有<a href="...">的每个li a属性,否则我将使菜单无法为知识较少的人提供服务。因此,我将每个sub_menu li a重定向到正确的锚名称属性链接。

现在,一旦我单击sub_menu li a之一,我将被重定向到正确的页面和正确的锚名称属性链接。但是,我对<a name="...">所在的位置并不了解。视口始终位于元素上方或下方。

由于某些原因,Chrome Thoe中不会发生这种情况。在Firefox,Edge和Internet Explorer中,我得到了这个奇怪的错误。

因此,我尝试刷新(而不是重新加载)页面,然后它可以工作。因此,我决定使用jQuery创建一个小脚本,使每个.load()之后刷新页面,这就是我想到的:

$(window).load(function () {
    $('html').load();
});

现在,我不确定这是否是解决问题的正确方法,还是我的脚本不正确。但这对我不起作用。我做错了什么?

1 个答案:

答案 0 :(得分:1)

因此,您正在导致li a没有href更改带有锚点的页面,并且不得不重新加载以使锚点正确定位吗?我理解正确吗?

首先,我建议它们应为href,因为它们不是锚点,而是链接。.

除此之外,从您所提供的内容(通常应该是更多信息)来看,我猜想视口所在的位置是页面更改之前元素所在的位置在加载过程中,将元素上下移动。 Chrome浏览器可能会比其他浏览器更晚地定位锚定位置(即,在加载/渲染更多内容之后)。

我会通过暂时禁用导致DOM更改的页面上的任何加载并在加载期间移动元素来检查此问题。如果这是问题所在,则您需要根据加载的内容来决定如何最好地处理该问题。

希望这会有所帮助。