gpt4 book ai didi

javascript - history.replaceState 未定义 IE11

转载 作者:行者123 更新时间:2023-11-30 17:21:44 26 4
gpt4 key购买 nike

我正在使用 bootstrap 的 scrollspy 更改页面滚动时突出显示的导航栏项目,然后使用 history.replaceState 将哈希添加到 url。 This question给了我那部分的想法。我还使用一些 jquery 在单击导航项时实现“平滑滚动”,然后在“平滑滚动”向下定位到 anchor 时关闭 scrollspy,然后将散列添加到 url 并重新打开 scrollspy。

scrollspy 部分工作正常,单击导航链接时出现问题。它在 Chrome 和 Firefox 中按预期工作,但在 IE 10 和 11 中,它在单击链接时在 url 中的散列前添加了 undefined,我不知道为什么。

这是我的脚本:

//initiate scroll spy
$('body').scrollspy({ target: '.spy-active', offset: $offset + 1 });
$('.spy-active').on('activate.bs.scrollspy', function (e) {
if (history.replaceState) {
history.replaceState(null, "", $('a[href*=#]:not([href=#])', e.target).attr("href"));
}
});

//smooth scroll
$('a[href*=#]:not([href=#])').click(function (e) {
e.preventDefault();
//deactivate scrollspy for duration of transition
$('nav').removeClass('spy-active');

//remove active class from all list items
$('li').each(function () {
$(this).removeClass('active');
});
//add active class to clicked item
$(this).parent().addClass('active');
var target = this.hash;
var $target = $(target);
$('html, body').stop().animate({
'scrollTop': $target.offset().top - $offset
}, 500, 'swing', function () {
if (history.replaceState) {
history.replaceState(null, "", target);
}
//reactivate scrollspy
$('nav').addClass('spy-active');
});
});

我的网站是here

最佳答案

当您单击导航链接时,该行将在 IE 中立即执行:

history.replaceState(null, "", $('a[href*=#]:not([href=#])', e.target).attr("href"));

如果在 e.target 中没有找到链接,则 .attr("href") 的结果是 undefined。因此,您需要检查是否找到链接,然后调用 history.replaceState:

var matchLink = $('a[href*=#]:not([href=#])', e.target);
if(matchLink.length) {
history.replaceState(null, "", matchLink.attr("href"));
}

关于javascript - history.replaceState 未定义 IE11,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25040842/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com