imidway
小狐狸
小狐狸
  • UID37084
  • 注册日期2011-08-26
  • 最后登录2019-11-17
  • 发帖数23
  • 经验36枚
  • 威望0点
  • 贡献值26点
  • 好评度1点
  • 社区居民
  • 忠实会员
阅读:1005回复:3

魔改过的scroll with mouse油猴脚本,大家看看还能进一步修改不?

楼主#
更多 发布于:2017-12-17 21:42
这个脚本我用了很多年了。作用就是用鼠标碰一下页面侧边,可以进入悬停滚动状态,不用任何点击,单纯上下移动鼠标滚动页面,如图

图片:IMG_20171217_212328_HDR_20171217212840.jpg



(ps 没有用神给我的截图键是因为截不到鼠标指针,只能拍屏了  
当触发之后会有一个彩色的长方条跟随鼠标,鼠标在这个长方条内部区域点击一次,就会退出滚动状态恢复正常。


后来也是论坛里的兄弟帮我改成了左侧版本。更加顺手了

图片:IMG_20171217_212400_HDR_20171217212827.jpg






目前问题是, 点击一次就退出滚动的功能,只会在我红框标出的区域生效

图片:Inkedaaaaafe_LI.jpg







so...
怎样让它可以覆盖整个彩色长方条?这样,就能实现更加无脑的滚动了。任何时候想退出,随便点一下鼠标就好,不用滑动时还想着稍微往右移动一点??
目前使用的是仍然支持xul的最新56版waterfox,油猴也停留在3.17版  (换其他任何猴子都有某些脚本会失效)
二楼是代码,先谢过各位大佬了。

(ps 貌似是因为虽然功能改到了左侧,但脚本还是默认紧靠侧边那一小块区域是滚动条所在的位置,所以不会检测鼠标点击的行为?我也搞不太懂,调了几个脚本里的参数,还是没有用)
imidway
小狐狸
小狐狸
  • UID37084
  • 注册日期2011-08-26
  • 最后登录2019-11-17
  • 发帖数23
  • 经验36枚
  • 威望0点
  • 贡献值26点
  • 好评度1点
  • 社区居民
  • 忠实会员
1楼#
发布于:2017-12-21 03:15
(ノへ ̄、)
fanmli
小狐狸
小狐狸
  • UID51688
  • 注册日期2015-11-08
  • 最后登录2019-10-20
  • 发帖数51
  • 经验65枚
  • 威望0点
  • 贡献值60点
  • 好评度8点
  • 社区居民
  • 忠实会员
2楼#
发布于:2017-12-18 11:18
imidway:怎样插入代码才可以有复制的按钮呢?







// ==UserScript==
// @name           Scroll With Mouse Plus左侧滚动版
// @namespace      h...
回到原帖
imidway
小狐狸
小狐狸
  • UID37084
  • 注册日期2011-08-26
  • 最后登录2019-11-17
  • 发帖数23
  • 经验36枚
  • 威望0点
  • 贡献值26点
  • 好评度1点
  • 社区居民
  • 忠实会员
3楼#
发布于:2017-12-17 21:45
// ==UserScript==
// @name           Scroll With Mouse Plus左侧滚动版
// @namespace      http://userscripts.org/users/86496
// @description    Scroll a page by simply moving the cursor up and down, without even a click!
// @include        *
// @author         hzhbest
// @date           12/Jan/2010
// @version        1.16
// ==/UserScript==

// Original script by Protector one (http://userscripts.org/scripts/show/63593)
// hzhbest modded; -algorithm changed -compatibility improved -flexabiligy:move into the scrollbar to activate and continue scrolling while in the scroll-sensitive zone

(function(){

//###Customization: |可自定义的东西:
  
   //Show the scrolling indicator box or not, "1" to show. | 1-显示提示条,其他-不显示。
var scrollShowIndicator = 1;

   //Set the width of scroll-sensitive zone, "100" as full width, "10" as one tenth.
   // | “滚动触发区”宽度,区间:[0-100],100为屏宽,0为禁用,10为十分之一屏宽。
var VScrollonWidth = 7;

   //Set the background of the indicator bar. | 提示条的背景,可以为“rgba()”带透明色式或“#xxxxxx”实颜色式或其他。
var IndicBarBG = "#d3d3d3"   //透明色式rgba(245,222,0,.4)#55002b//

   //Set the height of "thickness" of the indicator bar. | 提示条的粗细度,单位为像素。
var IndicBarH = 20;

   //Write here the width of the scrollbar (set in display properties) for highest accuracy.
   // | 在下面填写滚动条的宽度(也就是系统“显示属性”中的数字),这样能实现最高精确度。
var ScrollbarWidth = 0;

   //Set a trigger for activation, 1-none, 2-Ctrl key, 3-middle 100px range.
   // | 在下面设置激活条件,1-无,2-按住 Ctrl 键,3-鼠标在页面中间100像素高度范围内。
var activateCond = 1;


//###Customization ends. 请不要更改下面代码。
var scrollStartSWTM = -1;

var factor;
var b=0;
var VScrollOn=0;

   document.addEventListener('mousemove',function(event){
      var dheightMax = Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);
      var cwidthMax = Math.max(document.body.clientWidth, document.documentElement.clientWidth);
      var cwidthMin = parseInt(window.innerWidth-document.body.clientWidth);
      var cwinHeight = window.innerHeight;
      var scrollboxHeight = window.innerHeight - 2*ScrollbarWidth
      if(dheightMax > cwinHeight){
         if (event.clientX < cwidthMin)
            switch(activateCond){
               case 1:
                  VScrollOn = 1;
                  break;
               case 2:
                  if(event.ctrlKey)VScrollOn = 1;
                  break;
               case 3:
                  if(event.clientY>cwinHeight/2-50 && event.clientY<cwinHeight/2+50)VScrollOn = 1;
            };
         if (event.clientX > (cwidthMin+(VScrollonWidth/100) * cwidthMax))VScrollOn = 0;
         if (document.body.contentEditable == "true")VScrollOn = 0;
      }
      if (VScrollOn){
         if (scrollShowIndicator == 1)make_boxes();
         if (scrollStartSWTM != -1){
            factor = (event.ctrlKey) ? dheightMax / scrollboxHeight / 2 : dheightMax / scrollboxHeight;
            if (b){b.style.top = (event.clientY - IndicBarH/2) + 'px';}
            var delta = factor * (event.clientY - scrollStartSWTM);
            document.body.scrollTop += delta;
            document.documentElement.scrollTop += delta;
            if(event.clientY + 20 > cwinHeight){
               document.body.scrollTop += (factor * 10);
               document.documentElement.scrollTop += (factor * 10);
            }
            if(event.clientY > 0 && event.clientY < 20){
               document.body.scrollTop -= (factor * 10);
               document.documentElement.scrollTop -= (factor * 10);
            }
         }
         scrollStartSWTM = event.clientY;
      }
      else{
         scrollStartSWTM = -1;
         if (b) setTimeout(function(){b.style.top = -200 + 'px';},200);
      }
   },false);
   document.addEventListener('click',function(){VScrollOn=0;},false);


   function make_boxes() {
      if (!b) {
         b = document.createElement("div");
         b.setAttribute("id","IndicatorBox");
         b.setAttribute("style", "width:" + VScrollonWidth +"%;background:" + IndicBarBG + ";min-height:" +IndicBarH + "px;text-align:center;position: fixed; top: -40px; left: "+ScrollbarWidth+"px;overflow: hidden; z-index: 10005;font-family:Arial !important;cursor:n-resize;cursor:ns-resize;");
         document.body.appendChild(b);
         b.addEventListener('click',function(){VScrollOn=0;},false);
         return true;
      }
   }

})();
游客

返回顶部