从另一个页面访问时引导滚动间谍

Posted

技术标签:

【中文标题】从另一个页面访问时引导滚动间谍【英文标题】:Bootstrap scrollspy when accessing from another page 【发布时间】:2015-08-23 15:28:26 【问题描述】:

我试图链接到我主页的特定部分,同时保持滚动间谍功能。

使用此代码:

<li><a href="#sec1">About</a></li>

scrollspy 正在运行,但如果我尝试从主页以外的页面访问它,它只会将 "#sec1" 添加到当前页面的 url,没有效果。

如果我将其更改为:

<li><a href="/#sec1">About</a></li>

它会将我带到主页上的正确部分,但 scrollspy 功能不再起作用。

js 代码

$(function()/* smooth scrolling for scroll to top */
     /* highlight the top nav as scrolling occurs */
     $('body').scrollspy( target: '#navbar' )
);

有什么想法吗?

【问题讨论】:

【参考方案1】:

你可以试试

$(document).ready(function()
    var href = window.location.href; 
    var splitit = (href.split('#'))[1]; //split url to get sec1 name
    if(splitit !== "" || splitit !== "undefined")
        $('html, body').animate(
            scrollTop: $('#'+splitit).offset().top
        , 2000);
    
);

此代码将拆分 url 以获取 sec1 或 sec2 .... 然后滚动到 id="sec1" 的 div

我的意思是,如果您将另一个页面重定向到 www.website.com/anything#sec1,它会将页面滚动到 id="sec1"

看看这个DEMO

你可以看到这个Jsffidle

【讨论】:

【参考方案2】:

@Mohamed-Yousef 回答的另一种方法是在链接上 simulate the click 做

$(document).ready(function() 
    // workaround for deep link via anchor
    var stripped_url = window
                    .location
                    .toString()
                    .split("#");
    if (stripped_url.length > 1) 
        var activeId = "#nav-deep-" + stripped_url[1];
        $(activeId)[0].click();
    
);

jQuery 选择器需要链接元素上的适当 id,例如 &lt;a id="nav-deep-sec1" href="#sec1"&gt;About&lt;/a&gt;

还有一个更优雅的避免额外 ID 的解决方案是 select the first link which points to the anchor 这样做

$(document).ready(function() 
    // workaround for deep link via anchor
    var stripped_url = window
                    .location
                    .toString()
                    .split("#");
    if (stripped_url.length > 1) 
        $("a[href='#"+stripped_url[1]+"']")[0].click();
    
);

【讨论】:

以上是关于从另一个页面访问时引导滚动间谍的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Ajax 从另一个页面操作引导选项卡

从另一个页面定位引导程序 4 选项卡面板

从另一个页面访问时无法访问的链接

引导选择大列表向下滚动页面(我不能使用最大高度/滚动条)

从另一类 Windows 手机访问页面的按钮控件?

引导模式删除滚动条