您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
让推特图片浏览更加人性化
当前为
- // ==UserScript==
- // @name Twitter image viewing enhancement
- // @name:zh-CN Twitter 图片查看增强
- // @name:zh-TW Twitter 圖像查看增強
- // @icon https://twitter.com/favicon.ico
- // @namespace https://moe.best/
- // @version 1.0.1
- // @description Make Twitter photo viewing more humane
- // @description:zh-CN 让推特图片浏览更加人性化
- // @description:zh-TW 讓 Twitter 照片瀏覽更人性化
- // @author Jindai Kirin
- // @include https://twitter.com/*
- // @license MIT
- // @grant none
- // @run-at document-end
- // @require https://cdn.jsdelivr.net/npm/jquery@3.4.1/dist/jquery.min.js
- // @require https://cdn.jsdelivr.net/npm/jquery-mousewheel@3.1.13/jquery.mousewheel.min.js
- // ==/UserScript==
- // 注意 NOTICE
- // v1.0.0 是一次实验性的重大更新,你将不再需要设置 aria-label,并且支持所有语言。如果某一天脚本突然无法正常工作,请于脚本页面反馈,或退回至 v0.6.3。
- // v1.0.0 is an important experimental update, you will no longer need to set up aria-labels and it support all languages. If one day the script not work, please feedback on the script homepage or use v0.6.3.
- (() => {
- 'use strict';
- const labels = {};
- try {
- const kv = {
- af8fa2ad: 'close',
- c4d53ba2: 'prev',
- d70740d9: 'next',
- };
- webpackJsonp[2][1][webpackJsonp[2][2][0][0]](null, null, () => ({
- _register: () => (k, v) => {
- if (k in kv) labels[kv[k]] = v;
- },
- }));
- } catch (error) {}
- const getBtnByLabel = label => $(`div[aria-labelledby="modal-header"] div[aria-label="${label}"]`);
- const clickBtn = name => {
- const $btn = getBtnByLabel(labels[name]);
- if ($btn.length) {
- $btn.click();
- return true;
- }
- return false;
- };
- const closeImgView = () => clickBtn('close');
- const prevImg = () => clickBtn('prev');
- const nextImg = () => clickBtn('next');
- $(document).mousewheel(({ deltaY, target: { tagName, baseURI } }) => {
- if (tagName == 'IMG' && /\/photo\//.test(baseURI)) {
- switch (deltaY) {
- case 1:
- prevImg();
- break;
- case -1:
- nextImg();
- break;
- }
- }
- });
- (() => {
- let x = 0;
- let y = 0;
- $(document).mousedown(({ clientX, clientY }) => {
- x = clientX;
- y = clientY;
- });
- $(document).mouseup(({ button, clientX, clientY, target: { tagName, baseURI } }) => {
- if (button !== 0 || !(tagName == 'IMG' && /\/photo\//.test(baseURI))) return;
- const [sx, sy] = [clientX - x, clientY - y].map(Math.abs);
- const mx = clientX - x;
- if (sx <= 10 && sy <= 10) closeImgView();
- if (sy <= sx) {
- if (mx > 0) prevImg();
- else if (mx < 0) nextImg();
- }
- });
- })();
- })();