YGestures

for Android Browser without Touch Gestures(particularly Yandex)【向手机版yandex浏览器注入前进&后退手势&&网页文本粘贴功能,并可临时禁用某一手势】

目前为 2019-11-23 提交的版本。查看 最新版本

  1. // ==UserScript==
  2. // @name YGestures
  3. // @namespace http://monodog.net/
  4. // @version 0.5.8.5
  5. // @license CC-BY-NC-SA-4.0
  6. // @description for Android Browser without Touch Gestures(particularly Yandex)【向手机版yandex浏览器注入前进&后退手势&&网页文本粘贴功能,并可临时禁用某一手势】
  7. // @author Monodog Theiions
  8. // @icon https://monodog.neocities.org/js/icon/YGestures.png
  9. // @homepage https://gf.qytechs.cn/zh-CN/scripts/392713-ygestures
  10. // @supportURL mailto:wung.thy@gmail.com
  11. // @match http://*/*
  12. // @include https://*/*
  13. // @exclude *://*login*
  14. // @run-at document-body
  15. // @require https://cdn.jsdelivr.net/npm/hammerjs@2.0.8
  16. // @grant unsafeWindow
  17. // @contributionURL https://qr.alipay.com/fkx02998fhy75rwy0pjx2eb
  18. // @compatible Yandex for Android , etc
  19. // @incompatible All Browser without Touch
  20. // ==/UserScript==
  21.  
  22. (function() {
  23. 'use strict';
  24. if(window.navigator.userAgent.toLowerCase().indexOf("linux")>10)// code here
  25. {
  26. let YGBool=0;
  27. let allowNone="none";
  28. let copyStr="";
  29. let array=["上隐藏*下显示*左前进*右后退,按住禁用滑动事件","右滑已经禁用,按住继续更改","水平滑动已经禁用,按住继续更改","上下功能已对调,左右滑动已禁用,按住还原"];
  30. let body=document.getElementsByTagName("body")[0];
  31. var floatDIV = document.createElement("div");
  32. floatDIV.style.cssText=
  33. "z-index: 9999;width:100%; height:30px; background:SlateBlue;color:Ivory;line-height:30px;display:none;position: fixed;bottom: 0;font-size:12px";
  34. floatDIV.innerHTML=array[0];
  35. body.appendChild(floatDIV);
  36. let footArea = document.createElement("textarea");
  37. footArea.rows="9";footArea.style.cssText=
  38. "z-index: 9999;width:60%;border:solid 1px #f00; background:Ivory;color:SlateBlue;display:none;position: fixed;bottom: 30px;font-size:12px";
  39. body.appendChild(footArea);
  40. let pingGoogle=false;
  41. let imgStic=document.createElement("img");
  42. imgStic.src="https://about.google/assets/img/menu.png?cache="+parseInt(new Date().getTime()/9999);
  43. imgStic.onload = function() {
  44. pingGoogle=true;
  45. body.removeChild(imgStic);
  46. }
  47. body.appendChild(imgStic);
  48. new Hammer(body).on("pan", function(e) {
  49. let _e = event || window.event;
  50. if(Math.abs(e.deltaY) < 2 * Math.abs(e.deltaX) + 2 ) {
  51. if(Math.abs(e.deltaX)< 2 * Math.abs(e.deltaY)+ 2 && Math.abs(e.deltaX)>2 ) {
  52. if(e.deltaX>0){
  53. //let e = event || window.event;
  54. copyStr=(document.elementFromPoint(_e.clientX, _e.clientY).innerHTML);
  55. floatDIV.style.display="block";
  56. if(footArea.style.display=="none")floatDIV.innerHTML=array[YGBool]+"#@向上拖拽启动粘贴";
  57. copyStr=copyStr.replace(/<[^>]*>/g, '\r\n');footArea.value=copyStr;
  58. }
  59. else if(e.deltaY>2){
  60. if(footArea.value==""||footArea.style.display=="none"){
  61. //alert(e.deltaX+';'+e.deltaY);
  62. YGBool=0;
  63. floatDIV.innerHTML=array[YGBool];
  64. floatDIV.style.display=allowNone;
  65. ;footArea.style.display="none";
  66. copyStr="";
  67. }
  68. else if(footArea.value.substr(0,4)=="http"){
  69. window.open(footArea.value);
  70. }
  71. else{
  72. if(copyStr!="<"+footArea.value+">"){
  73. copyStr=footArea.value;
  74. if(!pingGoogle) window.open("https://www.baidu.com/s?wd="+copyStr);
  75. else window.open("https://www.google.com/search?ie=UTF-8&q="+copyStr);
  76. copyStr="<"+footArea.value+">";
  77. }
  78. }
  79. }
  80. else{
  81. "unsafe#cannot use";
  82. }
  83. }
  84. }
  85. else if(((e.deltaY<0)!=(YGBool==3))&&footArea.style.display=="none") {floatDIV.style.display=allowNone;}
  86. else floatDIV.style.display= "block";})
  87. .on("swipeleft", function (e) {
  88. if(Math.abs(e.deltaX) > 2 * Math.abs(e.deltaY) + 2 && YGBool<2 ) window.history.go(1);})
  89. .on("swiperight", function (e) {
  90. if(Math.abs(e.deltaX) > 2 * Math.abs(e.deltaY) + 2 && YGBool==0 ) window.history.go(-1);})
  91. .on("pressup", function (x) { var e = event || window.event;
  92. let ele=document.elementFromPoint(e.clientX,e.clientY);
  93. if(ele!=footArea&&ele!=floatDIV) {copyStr=ele.innerHTML;
  94. floatDIV.style.display="block";}
  95. if(footArea.style.display=="none")floatDIV.innerHTML=array[YGBool]+"#@向上拖拽启动粘贴";
  96. copyStr=copyStr.replace(/<[^>]*>/g, '\r\n');footArea.value=copyStr;})
  97.  
  98.  
  99.  
  100. new Hammer(floatDIV).on("pressup", function (e) {
  101. if(footArea.style.display=="block");
  102. else if(copyStr=="") floatDIV.innerHTML=array[YGBool=(YGBool+1)&3];
  103. else floatDIV.innerHTML=array[YGBool=(YGBool+1)&3]+"#@向上拖拽启动粘贴";})
  104. .on("pan", function (e) {
  105. if(-(e.deltaY) > 2 * Math.abs(e.deltaX) + 2 ) {
  106.  
  107. footArea.style.display=(copyStr!=""||YGBool<2)?"block":"none";
  108. floatDIV.style.display="block";
  109. YGBool=2;
  110. footArea.value=(copyStr=="")?body.innerHTML:copyStr;
  111. floatDIV.innerHTML=footArea.style.display!="none"?"左滑收起,左滑转上滑安全收起;":array[YGBool];
  112.  
  113. }
  114. if(Math.abs(e.deltaX) > 2 * Math.abs(e.deltaY) + 2 ) {
  115. if(e.deltaX<0) {footArea.style.display="none";YGBool=3;copyStr="";floatDIV.innerHTML=array[YGBool];}
  116. else if(footArea.style.display=="none") {allowNone="block";floatDIV.innerHTML="控制模块已锁定";}
  117. else if(footArea.value.substr(0,4)=="http"){
  118. window.open(footArea.value);
  119. }
  120. else{
  121. if(copyStr!="<"+footArea.value+">"){
  122. copyStr=footArea.value;
  123. if(!pingGoogle) window.open("https://www.baidu.com/s?wd="+copyStr);
  124. else window.open("https://www.google.com/search?ie=UTF-8&q="+copyStr);
  125. copyStr="<"+footArea.value+">";
  126. }
  127. }
  128. }
  129.  
  130. })
  131.  
  132. }
  133. })();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址