Firefox-使用jQuery航路点滚动更新window.location.hash
Firefox - updating window.location.hash on scroll with jQuery waypoints
BLUF:使用jQuery Waypoints用滚动到元素ID的方式更新location.hash
会导致FF中的滚动冒泡/卡顿,但不会导致Chrome或IE中的滚动。
问题:当用户滚动具有以下基本布局的表时,我使用jQueryWaypoints来做一些事情:
____________________________________________________
| <tr class="category" id="cat1">Category One</tr> |
| Cell | Cell | Cell |
| Cell | Cell | Cell |
| Cell | Cell | Cell |
____________________________________________________
| <tr class="category" id="cat2">Category Two</tr> |
| Cell | Cell | Cell |
| Cell | Cell | Cell |
| Cell | Cell | Cell |
我想做的一件事是将视口顶部的.category
行的ID附加到window.location
。这个jQuery在Chrome 34和IE中工作,但在FF 28中,它会导致"冒泡"行为,即即使用户不断向下滚动,浏览器也会试图跳回来将元素放在视口的顶部。我在这里注释掉了preventDefault
,因为尽管它修复了FF中的跳转,但它也阻止了脚本在到达第一个.category
元素后更新哈希。有没有人在FF中更新location.hash
时遇到过类似的问题,或者知道如何修复它?
$( '.category').waypoint(function() {
//strip current hash from window.location
window.location.hash.replace('#','');
//store waypoint element's id
var setHref = $(this).attr('id');
//set id as location.hash
window.location.hash = setHref;
//e.preventDefault();
return false;
}, { context: 'section' });
这是更改location.hash
的核心功能:它会将您滚动到哈希引用的片段。使用location.hash
无法绕过它。
对于相当现代的浏览器,您可以使用pushState或replaceState来操作URL和导航历史记录,而不会导致跳转到新推送的文档片段。
相关文章:
- 正在寻找比$(document).ready慢的$(window).load的替代方案
- Javascript循环不会自我更新
- 直接下载文件,而不是从window.open(url)
- 添加文字和评论功能更新Div
- AngularJS:ng之后,重复$scope值未按预期更新
- 如何通过数组更新角度子范围
- Ajax聊天消息重复而不仅仅是更新
- $window.ga在AngularJS事件中未定义
- 通过CSV文件上载更新数据库表
- 平均值:无法将数据更新到数据库
- $rootScope未使用forEach进行更新
- d3基于用户选择动态更新节点
- jquery select()/window.get选择仅在鼠标抬起后更新
- ExtJs 4 -如何在动态更新可关闭属性时更新Ext.window.Window布局
- $(window).height()没有't动态更新
- 如何在使用$window.location更改位置后获得更新的($scope)数据
- $watch仅在window.innerWidth的第一次更新时触发
- Firefox-使用jQuery航路点滚动更新window.location.hash
- ASP.NET AJAX:更新面板中的按钮会导致在window.onbeforeunload之前激发OnClick事件
- 是Window.getComputedStyle()始终更新的结果