向上滚动事件,因为铬不起作用
Scroll up event for chrome not working
所以我有一个简单的布局,
<a name="#A1"></a>
<div></div>
<a name="#A2"></a>
<div></div>
<a name="#A3"></a>
<div></div>
我使用下面的脚本跳转到鼠标滚动事件的下一个锚点。我已经测试过它,它可以在 Firefox 和 IE 上运行,但在 Chrome 上只能向下滚动,当您向上滚动时没有任何反应。
(function() {
var delay = false;
$(document).on('mousewheel DOMMouseScroll', function(event) {
event.preventDefault();
if(delay) return;
delay = true;
setTimeout(function(){delay = false},200)
var wd = event.originalEvent.wheelDelta || -event.originalEvent.detail;
var a= document.getElementsByTagName('a');
if(wd < 0) {
for(var i = 0 ; i < a.length ; i++) {
var t = a[i].getClientRects()[0].top;
if(t >= 40) break;
}
}
else {
for(var i = a.length-1 ; i >= 0 ; i--) {
var t = a[i].getClientRects()[0].top;
if(t < -20) break;
}
}
$('html,body').animate({
scrollTop: a[i].offsetTop
});
});
})();
im 得到的错误是未捕获的类型错误:无法读取未定义的属性"top"
来自规范
如果调用它的元素没有关联的 布局框返回一个空序列并停止此算法。
getClientRects()
函数可能会返回空列表。 因此[0]
索引处的元素可能不存在(未定义)。因此,您应该在访问列表中的元素之前检查列表的长度。
将"getElementsByTagName"更改为"getElementsByClassName" (函数() { VaR 延迟 = 假;
$(document).on('mousewheel DOMMouseScroll', function(event) {
event.preventDefault();
if(delay) return;
delay = true;
setTimeout(function(){delay = false},200)
var wd = event.originalEvent.wheelDelta || -event.originalEvent.detail;
var a = document.getElementsByClassName("full-height");
if(wd < 0) {
for(var i = 0 ; i < a.length ; i++) {
var t = a[i].getClientRects()[0].top;
if(t >= 40) break;
}
}
else {
for(var i = a.length-1 ; i >= 0 ; i--) {
var t = a[i].getClientRects()[0].top;
if(t < -20) break;
}
}
$('html,body').animate({
scrollTop: a[i].offsetTop
});
});
})();
如果您尝试获取元素的计算top
,这看起来不正确。
var t = a[i].getClientRects()[0].top;
这应该使用offsetTop
.
var t = a[i].getClientRects()[0].offsetTop;
相关文章:
- electronic BrowserWindow的最小高度和宽度在hide()show()方法之后不起作用
- 监视函数从服务返回不起作用,但作用域函数起作用
- 幻灯片滚动javascript不起作用
- 简单的javascript在Shopify中不起作用
- Recaptcha在IE7和IE8中不起作用
- Ember Data DS.Model's set函数不起作用
- $(this).attr({class:“activeTab”});不起作用,因为这是未定义的
- Aurelia反复绑定.因为不起作用
- AJAX调用不起作用,因为它继续转到链接
- 类绑定在 emberjs 中不起作用,因为不检查属性
- $(..).工具提示不起作用,因为 jQuery 1.9.2 由于旧的 jQuery UI 1.8.16 库而不起作用?
- ng路由不起作用.我不知道错误是什么,因为控制台中没有显示任何内容
- Flowplayer JS API 不起作用,因为 Flowplayer 未“加载”
- getElementByID 不起作用,因为字段在某种框架中,我如何访问它
- 向上滚动事件,因为铬不起作用
- 织物 js 粗斜体不起作用,因为 JSON 中的字体样式对象
- 因为让循环不起作用
- “返回假;”,因为表单提交不起作用
- 使用单词'英语'因为变量/对象名称在javascript中不起作用
- 引用类内的变量..当“;这个"不起作用,因为我们处于函数中