如果链接到网站外部,则链接到ID为的元素不起作用



我正在尝试设置我的网站,使网站的行为像维基百科页面,在那里你可以链接到特定的部分,一旦点击链接,它就会带你进入这些部分。

我在每一页上都设置了目录,如果你已经在页面上并单击锚链接,它会将你带到右侧部分。

但是,如果我与其他人共享该链接,则该链接不会将他们带到正确的部分,而只是加载页面,就好像它是直接指向该页面的链接一样。

我有一个活生生的例子,你可以用它来帮助我排除故障。

此链接:https://www.bamapolitics.com/alabama/#Alabama_Statewide_Officials应该会带你进入阿拉巴马州官员的标题,但如果点击,就可以正常加载页面。但是,如果你从目录区域点击相同的链接,它会滚动到它

你知道我在这里遗漏了什么吗?这是我网站的一个非常重要的部分,因为它有助于让人们直接了解他们在整个网站的页面上请求的信息。

编辑:代码很简单。我已经解释过了。这是页面上唯一的代码。那么上面的链接就是应该使用的。

<header><h2 class="p-1 mt-3 alert alert-info rounded-0"><span id="Alabama_Statewide_Officials">Alabama Statewide Officials</span></h2></header>

发生的事情的视频:https://1drv.ms/v/s!AqulOvyPazAj63kiZofUEWPNUcH3B?e=uNDQtf

我无法重现页面没有转到部分的情况。它确实转到了指定的部分,但当直接粘贴带有ID的链接时,我看不到滚动效果,这是我从目录转到该部分时看到的。简单的答案是,包含span#alabama_statewide_officialsa元素有一个click事件的事件侦听器,如下所示:

function(t) {
t.preventDefault();
var e = this.getAttribute("href"),
c = e.substring(1),
d = a(c);
d && (e !== document.location.hash && (i.onComplete = function(t, e) {
var i, n, o, l, a, r, s;
d.setAttribute("id", ""), i = c, n = t, o = e, (s = document.createElement("a")).setAttribute("id", i), s.setAttribute("style", "position:absolute;visibility:hidden;left:" + n + "px;top:" + o + "px;"), l = document.body, a = s, l.prepend ? l.prepend(a) : l.insertBefore(a, l.firstChild), document.location.hash = i, (r = s).remove ? r.remove() : r.parentNode.removeChild(r), d.setAttribute("id", c)
}), u.scrollTo(d, i))
}

您可以在倒数第二行清楚地看到u.scrollTo(d, i))。当您单击目录中的链接时,该函数将被触发。但当你直接粘贴链接并进入网站时,该功能不会被触发,因此你没有滚动效果。

最新更新