在滚动页面时将页面部分 ID 添加到地址栏
add page section id to the address bar on scrolling the page
我想在滚动时将页面部分ID添加到地址栏中URL的末尾:
例如
<section id="home"></section>
<section id="about"></section>
<section id="works"></section>
http://example.com/about/
或
http://example.com/works/
当然,当它是主页时,删除 URI 字符串。
和 在页面加载时,我希望页面滚动到请求的部分,我不希望它只是跳转到该部分。
有没有jQuery编写的代码?!我该怎么做?!
IE <= 9中是不可能的,其中包含您想要的URL。
您可以在此处查看有关如何使用 jQuery 以编程方式滚动到元素的示例。
如果你不关心IE <= 9,你可以使用window.history.replaceState()方法将当前URL替换为你想要的url,并避免导航。
在链接中调用部分想法的方法<a href="#about">about</a>
,这将带您进入 example.com/#about
下面是一个带有 JQuery 的 JSFiddle 示例,您可以复制以实现平滑滚动:http://jsfiddle.net/gvee/LYqVk/1/
只需单击一个链接,它就会滚动到该部分 ID。
jQuery将允许您滚动到一个位置,但您需要的不仅仅是jQuery。您将需要使用一个 Web 框架来解释 url 路径(如/about/或/works/),并将其作为参数传递给页面。例如,如果你的站点实际上只是一个页面,你将需要配置你的框架(无论是.NET MVC,Struts 2,NodeJS等)始终返回相同的页面,无论路径如何,但采用该路径并以某种方式将其插入到页面上,无论是HTML还是JavaScript。
例如
var desiredSection = "<%=blah%>"; // if you are using Java JSPs
将该值分配给 JavaScript 变量后,您可以使用一些 jQuery 或 JavaScript 滚动库来执行其他答案中提到的操作。
需要注意的一件事是,这将产生潜在的XSS安全问题,因此如果您在面向公众的网站上使用它,请小心。
首先,对于页面加载时的滚动,您可以使用已经内置的功能。当您输入 URL 并附加#id
它将立即滚动。为此,您可以使用<a href="#id">Go to #id</a>
。
如果您假装将 id 附加到 URL,同时滚动并且没有重新加载,这有点棘手:
// Order by position from top to bottom
var sections = $("#home, #about, #works"); // or $("section");
$(window).scroll(function (event) {
var scroll = $(window).scrollTop();
for(var i = 0; i < sections.length; i++) {
var $section = $(sections[i]);
if(scroll >= $section.offset().top) {
// Will change URL without reloading, affecting the history
history.replaceState("data",
"title",
location.origin + location.pathname + "#" +
$section.attr('id'));
}
});
要在浏览器中更改网址,您可以使用这个
window.location.href = window.location.href.replace(/#(.*)$/, '') + '#' + 'section_id';
您需要使用 #,因为这是可滚动单个页面上的客户端路由,因此您可以实现 example.com#about。使用/可以与服务器端路由一起使用,并且需要加载新页面。
这应该适合您 -> http://krasimirtsonev.com/blog/article/A-modern-JavaScript-router-in-100-lines-history-api-pushState-hash-url
附言。我知道,在 2015 年问过,但仍然没有被接受的答案。
- 可以't将带有变量的id添加到类中
- 使用 jQuery 将自定义 ID 添加到克隆的 HTML 节点
- 将ID添加到地图框标记
- 单击按钮时,我如何将li的id添加为1
- Ember.js为特定的模型id添加css类
- jQuery UI:如何将ID添加到组合框中
- 通过向动态id添加字符串,使用JavaScript控制文本框
- 使用 javascript 在运行时将 id 添加到
- 标签
- 将关联的 ID 添加到 for 循环中的复选框
- 将 ID 添加到画布绘图以供以后检索
- 如何将唯一 ID 添加到 Javascript 中动态创建的输入字段
- 将行 ID 添加到 jquery 弹出窗口
- 在 jQuery 中向未知元素 ID 添加值
- 将 Div ID 添加到 YouTube iFrame
- Javascript - 将唯一的元素 id 添加到具有相同类名的多个元素
- 如何阻止单个模型将其 id 添加到 Backbone 中的 url
- 在滚动页面时将页面部分 ID 添加到地址栏
- Stylus:为在 JavaScript 中生成的 ID 添加样式
- 如何在谷歌地图API中将类或ID添加到叠加层
- 将唯一 ID 添加到在单击函数上生成的动态 html