当页面实际上没有滚动时如何检测鼠标滚动(因为它太小)

时间:2018-03-28 03:45:50

标签: javascript browser event-handling mouseevent

scroll事件不会捕获鼠标“滚动”操作,而是捕获页面滚动操作。

这意味着在太小而无法实际滚动的页面上,无法检测用户的滚动操作(例如将其转换为缩放操作)。

要了解我的意思,请比较以下两个:

https://jsfiddle.net/r8aykcut/1/
https://jsfiddle.net/r8aykcut/2/

有没有办法在没有页面本身滚动的情况下监听鼠标滚动事件?

3 个答案:

答案 0 :(得分:1)

你可以使用这个监听器

mRootRef.child("messages").child(mCurrentUser).child(userKey).child("messages").addChildEventListener(new ChildEventListener() {
             @Override
 public void onChildAdded(DataSnapshot dataSnapshot, String s) {

     Messages messages = dataSnapshot.getValue(Messages.class);

     messagesList.add(messages);
     messageAdapter.notifyDataSetChanged();
     recyclerView.scrollToPosition(messagesList.size() - 1);

 }

 @Override
 public void onChildChanged(DataSnapshot dataSnapshot, String s) {
             Messages messages = dataSnapshot.getValue(Messages.class);
             int i=0;
             boolean isMatch=false;
            for(Messages m:messagesList)
            {
                if(messages.getId()==m.getId())
                {
                isMatch=true;
                    break;
                }
                i++;
            }

            if(isMatch)
            messagesList.set(i,messages);
            else
            messagesList.add(messages);
             messageAdapter.notifyDataSetChanged();


            }

            @Override
            public void onChildRemoved(DataSnapshot dataSnapshot) {

            }

            @Override
            public void onChildMoved(DataSnapshot dataSnapshot, String s) {

            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

                        }
                    });

你必须在你想要缩放的元素中设置这个监听器

例如,如果你有这样的事情

 addEventListener("wheel", anyFunctionYouWant ); 

为.wraper设置此监听器,这是因为我认为你想要一些东西,比如放大谷歌地图,如果你想要这个,你有功能,如果用户在地图上滚动你的功能就会触发(用于放大/缩小),并且光标必须在你的元素上设置,有Listener

答案 1 :(得分:1)

我认为你可以使用轮子事件。 当旋转指点设备(通常是鼠标)的滚轮按钮时,会触发滚轮事件。 这是参考链接: wheel event

答案 2 :(得分:1)

您已添加滚动侦听器。当页面滚动时它会监听。你必须使用轮子监听器。

document.addEventListener("wheel", detect);
function detect (e) {

console.log(e)

};

以上代码适合您。