Greasy Fork is available in English.
任意页面左右侧边缘下拉手势可清除一些恼人的悬浮广告元素,并停止相关计时器,适用于移动设备浏览器。
当前为
// ==UserScript==
// @name 边缘下拉清除悬浮广告
// @version 2.0
// @description 任意页面左右侧边缘下拉手势可清除一些恼人的悬浮广告元素,并停止相关计时器,适用于移动设备浏览器。
// @author ChatGPT
// @match *://*/*
// @run-at document-end
// @grant none
// @namespace http://greasyfork.icu/users/452911
// ==/UserScript==
// 配置参数
var triggerDistance = window.innerWidth / 15; // 边缘触发距离,单位 px
var triggerHeight = window.innerHeight / 3; // 下拉触发高度,单位 px
// 监听触屏下拉手势事件
document.addEventListener('touchstart', function(e) {
// 获取手指位置和屏幕宽度、高度
var touchX = e.touches[0].pageX;
var touchY = e.touches[0].pageY;
var screenWidth = window.innerWidth;
var screenHeight = window.innerHeight;
// 计算左右边缘触发位置和上方触发位置
var leftTrigger = triggerDistance;
var rightTrigger = screenWidth - triggerDistance;
var topTrigger = triggerHeight;
// 判断手指是否在左侧或右侧边缘触发位置或上方触发位置下拉
if (touchX < leftTrigger || touchX > rightTrigger || touchY < topTrigger) {
var startY = e.touches[0].clientY;
var isScrolled = false;
// 监听触屏手势滑动事件
document.addEventListener('touchmove', function(e) {
var endY = e.changedTouches[0].clientY;
var distance = endY - startY;
// 判断向下滑动距离是否大于指定的下拉距离
if (distance > triggerHeight && !isScrolled) {
isScrolled = true;
// 删除广告并清除计时器
var elementsToRemove = Array.from(document.querySelectorAll('*')).filter(function(el) {
var zIndex = parseInt(getComputedStyle(el).zIndex);
return zIndex > 500;
});
elementsToRemove.forEach(function(el) {
el.parentNode.removeChild(el);
});
setTimeout(function() {
for(var i = 1; i < 99; i++) {
clearInterval(i);
clearTimeout(i);
}
}, 0);
}
});
// 监听触屏手势结束事件和取消事件
document.addEventListener('touchend', function(e) {
isScrolled = false;
});
document.addEventListener('touchcancel', function(e) {
isScrolled = false;
});
}
});