Greasy Fork is available in English.
Endless scrolling between image posts with mousewheel
当前为
// ==UserScript==
// @name Twitter Endless Scroll [X]
// @namespace Twitter
// @version 1.5
// @description Endless scrolling between image posts with mousewheel
// @author NightLancerX
// @match https://x.com/*
// @match https://twitter.com/*
// @match https://mobile.twitter.com/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=twitter.com
// @license CC-BY-NC-SA
// @grant none
// @require https://code.jquery.com/jquery-3.3.1.min.js
// @run-at document-end
// @noframes
// ==/UserScript==
(function() {
'use strict';
let nextPost, shifted = false;
function changePost(shift){
let selector = 'img[src*="https://pbs.twimg.com/media/"]';
let posts = [...document.querySelectorAll('[data-testid="cellInnerDiv"] img[src*="https://pbs.twimg.com/media/"]')];
//console.log(posts);
let index = posts.indexOf(document.querySelector(`[href='${location.pathname}']`)?.querySelector('img[src*="https://pbs.twimg.com/media/"]'));
//console.log(index);
nextPost = posts[index+shift];
//console.log(nextPost);
nextPost?.scrollIntoView();
nextPost?.click();
shifted = true;
}
$('body').on('wheel', '[aria-labelledby="modal-header"]', function(e){
e.preventDefault();
e.stopPropagation();
let left;
if (e.originalEvent.deltaY < 0){
if (left = document.querySelector('[data-testid="Carousel-NavLeft"]'))
left.click();
else
changePost(-1);
}
let right;
if (e.originalEvent.deltaY > 0){
if (right = document.querySelector('[data-testid="Carousel-NavRight"]'))
right.click();
else
changePost(+1);
}
});
$('body').on('click', '[aria-labelledby="modal-header"] [data-testid="swipe-to-dismiss"]', function(e){
if (shifted) setTimeout(()=>{
let offset = nextPost?.closest('[data-testid="cellInnerDiv"]').style.transform.match(/\d+/)?.[0];
window.scroll(0, offset);
shifted = false;
}, 500);
})
})();