我正在寻找这样的效果:
$(window).scroll(function(event){
if (/* magic code*/ ){
// upscroll code
} else {
// downscroll code
}
});
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
当我想检测IE时,我使用此代码:
function getInternetExplorerVersion()
{
var rv = -1;
if (navigator.appName == 'Microsoft Internet Explorer')
{
var ua = navigator.userAgent;
var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
if (re.exec(ua) != null)
rv = parseFloat( RegExp.$1 );
}
return rv;
}
function checkVersion()
{
var msg = "You're not using Internet Explorer.";
var ver = getInternetExplorerVersion();
if ( ver > -1 )
{
msg = "You are using IE " + ver;
}
alert( msg );
}
Run Code Online (Sandbox Code Playgroud)
但IE11正在返回"你没有使用Internet Explorer".我该如何检测它?
debugging internet-explorer browser-detection forward-compatibility internet-explorer-11
我在我的网站上遇到jQuery功能问题.它的作用是,它使用该window.scroll() 功能来识别窗口何时改变其滚动位置,并且在更改时调用一些函数来从服务器加载数据.
问题是,.scroll()只要滚动位置发生一点变化并在底部加载数据,就会调用该函数; 但是,我希望实现的是当滚动/页面位置到达底部时加载新数据,就像Facebook Feed一样.
但我不知道如何使用jQuery检测滚动位置?
function getData() {
$.getJSON('Get/GetData?no=1', function (responseText) {
//Load some data from the server
})
};
$(window).scroll(function () {
getData();
});
Run Code Online (Sandbox Code Playgroud) 有没有办法scroll在jQuery中获取鼠标滚轮事件(而不是讨论事件)?
所以我试图用JavaScript on scroll来调用一个函数.但我想知道我是否可以在不使用jQuery的情况下检测滚动的方向.如果没有,那么有任何解决方法吗?
我想的只是放一个"顶部"按钮,但如果可以,我想避免这样做.
我现在只是尝试使用此代码,但它不起作用:
if document.body.scrollTop <= 0 {
alert ("scrolling down")
} else {
alert ("scrolling up")
}
Run Code Online (Sandbox Code Playgroud) 可能重复:
区分jquery中的向上/向下滚动?
是否可以检测用户是向下滚动还是向上滚动?
示例:
$(window).scroll(function(){
// IF USER SCROLL DOWN
DO ACTION
// IF USER SCROLL UP
DO ANOTHER ACTION
});
Run Code Online (Sandbox Code Playgroud)
谢谢
更新大卫建议的工作修复(见下文):
更换
$('.scrollMe').bind("mousewheel DOMMouseScroll", ...)
Run Code Online (Sandbox Code Playgroud)
同
$('.scrollMe').bind("mousewheel DOMMouseScroll MozMousePixelScroll", ...)
Run Code Online (Sandbox Code Playgroud)
原始邮政
Firefox 16.0.2(最新版)显示绑定"mousewheel/DOMMouseScroll"事件时的问题.当鼠标指针位于我的目标div顶部时用鼠标滚动滚动会导致窗口滚动 - 而我显然不想这样做.
我尝试添加几种方法来阻止传播等,但似乎没有任何效果.
Javascript代码:
$(document).ready(function() {
$('.scrollMe').bind("mousewheel DOMMouseScroll", function(e) {
e.stopImmediatePropagation();
e.stopPropagation();
e.preventDefault();
var delta = parseInt(e.originalEvent.wheelDelta || -e.originalEvent.detail);
$(this).empty();
return false;
});
});
Run Code Online (Sandbox Code Playgroud)
要查看它的实际效果,请按照下面的jsFiddle链接.在示例页面上,只需将鼠标指针放在带有红色框的div中,然后使用鼠标滚轮.Firefox将首次(意外地)滚动父窗口,而其他浏览器则不会.
奇怪的是,一旦你在绑定元素上触发事件,Firefox就不会重复这种行为,这意味着它会停止滚动页面.但是,在您手动滚动页面并再次尝试后,它会重复此行为.
我也在IE9和Chrome中测试了这个,但在这些浏览器中无法检测到这个问题(意味着它们不会意外地滚动窗口),所以我猜它是特定于Firefox的(也禁用了Firefox中的每个插件等) )
这真的是firefox中的一个错误(如果有的话,是否会出现跨浏览器的黑客攻击)?或者,如果您知道任何其他解决方案以实现捕获鼠标滚轮事件的相同效果而不使页面的窗口滚动,请随时回答!
我正在转换网站,虽然我想使用用户的滚动尝试作为转换启动器,但我不希望有一个窗口滚动条.
现在,我只是检测到用户滚动(我的窗口大小比滚动条的用户屏幕高1px,尽管这是我试图避免的)jquery的
.scroll(function)
Run Code Online (Sandbox Code Playgroud)
方法,并使用它来转换我的页面,但我想检测用户的滚动尝试,而不必让我的页面溢出一个像素,从而显示滚动条
如何才能做到这一点?
我知道凌乱的补丁可能性:
将窗口定位在外部包装器中并将滚动条隐藏在包装器的溢出中.这是一个补丁工作而不是解决方案.由于并非所有浏览器的滚动条使用相同的宽度,因此会导致页面内容偏离中心.
我试图用javascript检测一个有意的额外顶部/底部滚动.$(window).scrollTop()并window.pageYOffset没有用,因为他们停在前0,我想达到顶级-X之类的东西.对于底部,假设我的文档高度为500,底部就像底部5XX.
编辑: 示例代码可能是:
$(window).scroll(function(){
if(intentionalScrollTop){
// Do something
}else if(intentionalScrollDown){
// Do something
}
});
Run Code Online (Sandbox Code Playgroud)
我有一个由 vis.js 创建的大型网络图,它在浏览器中是 100% 宽并且非常高,因此需要向下滚动页面才能看到全部内容 - 我希望我的页面像世界上大多数其他网页一样运行 - 但是当我滚动时,vis.js 会缩放,而不是滚动页面。如何关闭滚动缩放,但仍允许捏合(或按住按键 + 滚动)?
当然,我可以使用此选项关闭缩放 - 并添加一些内置缩放按钮:
var options = {
interaction: {
zoomView: false,
navigationButtons: true,
}
};
Run Code Online (Sandbox Code Playgroud)
但这并不理想。它要求用户滚动到页面底部才能访问缩放控件。另外,我想要一个更易于访问的缩放功能(是的,我知道,我刚刚关闭了更易于访问的缩放功能)。可见时间线图似乎比网络图有更多的缩放方法。
总结一下:我希望对图表禁用鼠标滚轮/触控板滚动,从而提供自然的整个页面滚动行为,再加上捏合(或按住按键+滚动)进行缩放。
我正在为我的投资组合创建一个 OnePage。
每个站点都占屏幕的 100%。我希望当我使用鼠标滚轮滚动时,那个 Scroll 向下滚动 100%,这样我就可以直接进入下一个站点,而不是页面之间的某个位置。
有人能告诉我如何用 JS/jQuery 解决这个问题吗?