Quoting every tweet or image in OP's UNAPPRECIATION

Low End Derrick

Veteran
Joined
May 8, 2014
Messages
17,252
Reputation
6,219
Daps
75,577
were yall raised in barns :gucci: what the fukk is that shyt about

just backspace the media and leave the text


get over it family
full

Man, it's a losing battle.

It's been like 6 months and I still can't get these dweebs to post a Twitter link correctly.
Though to be fair, Nazi Elon Musk can eat a bag of dikks and rot in hell so we don't need to see that bullshyt anyway.


These same niccas don’t close doors because they were born in caves.

Good thread OP.

i hate when people abuse the white space and make a reply thats five pages of blank space

got my finger tired from scrolling so damn far fukk yall :pacspit:


Takes a few seconds to delete the media if you're going to quote

:francis:

Hilarious.

I used to get irate seeing MFers quote long ass comments with videos just to put one word replies or a smiley.

Threads be long as fukk because of these dudes :mjlol:

It's crazy

man i see what youre tryin to do here :ufdup:

i havent negged anybody today but i can start :usure:

Quote the OP that has 20 IG pictures in it just to post that one picture of the Asian dude on the microphone saying “would”. Damn just dap the post and keep it moving. Clogging up the damn page.

It’s worse on iPhone and the shyt keeps reloading because every other message is someone quoting a bunch of images, gifs and tweets.





agreed
 

Wig Twistin Season

Superstar
Supporter
Joined
May 24, 2022
Messages
7,011
Reputation
4,755
Daps
39,616
Reppin
San Diego
were yall raised in barns :gucci: what the fukk is that shyt about

just backspace the media and leave the text


get over it family
full

Man, it's a losing battle.

It's been like 6 months and I still can't get these dweebs to post a Twitter link correctly.
Though to be fair, Nazi Elon Musk can eat a bag of dikks and rot in hell so we don't need to see that bullshyt anyway.


These same niccas don’t close doors because they were born in caves.

Good thread OP.

i hate when people abuse the white space and make a reply thats five pages of blank space

got my finger tired from scrolling so damn far fukk yall :pacspit:


Hate that shyt.



Right?!
 

bnew

Veteran
Joined
Nov 1, 2015
Messages
59,231
Reputation
8,782
Daps
164,018
i just used Deepseek-R1 to create a bookmarklet to help navigate posts.

What They Do
Both the bookmarklet and userscript add navigation tools to threads on thecoli.com to make it easier to move through posts. They create floating buttons that let you jump from one post to another without scrolling manually. These tools are especially helpful in long threads with many posts or when posts contain large embedded content (like tweets or videos).

Key Features

  1. Floating Navigation Arrows (↑↓):
    • Two buttons appear on the screen: an up arrow (↑) and a down arrow (↓).
    • The arrows are centered on the page and stay in place even when you scroll.
    • They are semi-transparent (see-through) so they don’t block content, but they become solid when you hover over them.
  2. Jump Between Posts:
    • Clicking the up arrow scrolls the page to the previous post.
    • Clicking the down arrow scrolls the page to the next post.
    • The scrolling is smooth and skips over embedded content (like tweets or videos), so you don’t get stuck scrolling through large media.
  3. Toggle Button (Show/Hide Nav):
    • A toggle button appears at the bottom-right corner of the screen.
    • Clicking it shows or hides the navigation arrows.
    • By default, the arrows are hidden to avoid cluttering the screen.
  4. Mobile-Friendly Design:
    • The buttons are designed to work well on both desktop and mobile devices.
    • They don’t overlap with important content or links, so you can still interact with the page normally.
  5. No Duplicate Buttons:
    • If you accidentally run the bookmarklet or userscript multiple times, it won’t create duplicate buttons. It checks if the buttons already exist and avoids adding them again.

How They Work

  • Bookmarklet:
    • A bookmarklet is a small piece of JavaScript code that you save as a bookmark in your browser.
    • When you click the bookmarklet while viewing a thread on thecoli.com, it adds the navigation buttons to the page.
    • You need to manually activate it every time you visit a thread.
  • Userscript:
    • A userscript is a small program that runs automatically when you visit specific websites (like thecoli.com threads).
    • Once installed, it adds the navigation buttons to every thread you view on thecoli.com without requiring any manual activation.

Why They’re Useful

  1. Easier Navigation:
    • Instead of scrolling through long threads or getting stuck on large embedded content, you can quickly jump from one post to another.
  2. Cleaner Interface:
    • The buttons are designed to be unobtrusive and only appear when you want them (thanks to the toggle feature).
  3. Improved Reading Experience:
    • If you’re reading a thread with many posts, the navigation tools make it faster and more efficient to move through the content.
  4. Customizable:
    • You can show or hide the buttons at any time, depending on your preference.

Example Scenario

Imagine you’re reading a thread on thecoli.com with 100+ posts. Some posts contain large embedded tweets or videos, which make scrolling tedious. With the bookmarklet or userscript:
  1. You click the down arrow to jump to the next post, skipping over the embedded content.
  2. If you want to go back to a previous post, you click the up arrow.
  3. If the arrows are in the way, you click the toggle button to hide them.
  4. On mobile, the buttons stay in a convenient position and don’t interfere with tapping links or buttons on the page.

Technical Details (For the Curious)

  • The script identifies posts by looking for <article> tags, which are commonly used to structure forum posts.
  • It calculates the position of each post on the page and smoothly scrolls to the next or previous one when you click the arrows.
  • The buttons are styled with CSS to look modern and blend well with the website’s design.
  • The script checks for existing buttons to avoid adding duplicates, ensuring a clean experience.

Which Should You Use?

  • Bookmarklet: Use this if you want a lightweight solution that you can activate only when needed. It’s great for occasional use.
  • Userscript: Use this if you frequently visit thecoli.com threads and want the navigation tools to always be available without any extra steps.

In short, these tools make reading and navigating thecoli.com threads faster, smoother, and more enjoyable! 😊

F94IVQ6.png



JavaScript:
javascript:(function(){if(document.getElementById('forumNavToggle'))return;function getDocumentTop(el){return el.getBoundingClientRect().top+window.scrollY}function scrollToPost(posts,direction){const currentScroll=window.scrollY,viewportHeight=window.innerHeight;let targetPost=null;if('down'===direction){const scrollTarget=currentScroll+viewportHeight;for(const post of posts){const postTop=getDocumentTop(post);if(postTop>scrollTarget){targetPost=post;break}}}else{const scrollTarget=currentScroll;for(let i=posts.length-1;i>=0;i--){const post=posts[i],postBottom=getDocumentTop(post)+post.offsetHeight;if(postBottom<scrollTarget){targetPost=post;break}}}targetPost&&targetPost.scrollIntoView({behavior:'smooth',block:'start'})}const upButton=document.createElement('button'),downButton=document.createElement('button'),toggleButton=document.createElement('button');upButton.innerHTML='↑',downButton.innerHTML='↓',toggleButton.textContent='Show Nav';const buttonStyle=`position:fixed;opacity:0.7;background:rgba(0,0,0,0.6);color:white;padding:10px;cursor:pointer;z-index:9999;border-radius:50%;width:40px;height:40px;display:flex;align-items:center;justify-content:center;border:none;transition:opacity 0.3s;font-size:20px;transform:translateX(-50%);`;upButton.style.cssText=buttonStyle+'top:20px;left:50%;',downButton.style.cssText=buttonStyle+'bottom:20px;left:50%;',upButton.style.display='none',downButton.style.display='none';const toggleStyle=`position:fixed;bottom:20px;right:20px;z-index:9999;padding:10px 20px;font-size:14px;background-color:#333;color:#fff;border:none;border-radius:5px;cursor:pointer;box-shadow:0 0 10px rgba(0,0,0,0.5);`;toggleButton.style.cssText=toggleStyle,toggleButton.id='forumNavToggle';const existingButton=document.querySelector('button[style*="position:fixed"]');existingButton?existingButton.parentNode.insertBefore(toggleButton,existingButton):document.body.appendChild(toggleButton);let isVisible=!1;toggleButton.addEventListener('click',()=>{isVisible=!isVisible,upButton.style.display=isVisible?'block':'none',downButton.style.display=isVisible?'block':'none',toggleButton.textContent=isVisible?'Hide Nav':'Show Nav'}),upButton.addEventListener('mouseover',()=>{upButton.style.opacity='1'}),upButton.addEventListener('mouseout',()=>{upButton.style.opacity='0.7'}),downButton.addEventListener('mouseover',()=>{downButton.style.opacity='1'}),downButton.addEventListener('mouseout',()=>{downButton.style.opacity='0.7'}),upButton.addEventListener('click',()=>{const posts=Array.from(document.querySelectorAll('article')).sort((a,b)=>getDocumentTop(a)-getDocumentTop(b));scrollToPost(posts,'up')}),downButton.addEventListener('click',()=>{const posts=Array.from(document.querySelectorAll('article')).sort((a,b)=>getDocumentTop(a)-getDocumentTop(b));scrollToPost(posts,'down')}),document.body.appendChild(upButton),document.body.appendChild(downButton);})();



JavaScript:
// ==UserScript==
// @name         TheColi Thread Navigator
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  Adds navigation buttons to TheColi threads
// @author       You
// @match        *://www.thecoli.com/threads/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // Check if elements already exist
    if (document.getElementById('forumNavToggle')) return;

    // Helper function to get document position
    function getDocumentTop(el) {
        return el.getBoundingClientRect().top + window.scrollY;
    }

    // Scroll to next/previous post
    function scrollToPost(posts, direction) {
        const currentScroll = window.scrollY;
        const viewportHeight = window.innerHeight;
        let targetPost = null;

        if (direction === 'down') {
            const scrollTarget = currentScroll + viewportHeight;
            for (const post of posts) {
                const postTop = getDocumentTop(post);
                if (postTop > scrollTarget) {
                    targetPost = post;
                    break;
                }
            }
        } else {
            const scrollTarget = currentScroll;
            for (let i = posts.length - 1; i >= 0; i--) {
                const post = posts[i];
                const postBottom = getDocumentTop(post) + post.offsetHeight;
                if (postBottom < scrollTarget) {
                    targetPost = post;
                    break;
                }
            }
        }

        if (targetPost) {
            targetPost.scrollIntoView({behavior: 'smooth', block: 'start'});
        }
    }

    // Create navigation buttons
    const upButton = document.createElement('button');
    const downButton = document.createElement('button');
    const toggleButton = document.createElement('button');

    // Button styling
    const buttonStyle = `
        position: fixed;
        opacity: 0.7;
        background: rgba(0,0,0,0.6);
        color: white;
        padding: 10px;
        cursor: pointer;
        z-index: 9999;
        border-radius: 50%;
        width: 40px;
        height: 40px;
        display: flex;
        align-items: center;
        justify-content: center;
        border: none;
        transition: opacity 0.3s;
        font-size: 20px;
        transform: translateX(-50%);
    `;

    upButton.innerHTML = '↑';
    downButton.innerHTML = '↓';
    toggleButton.textContent = 'Show Nav';

    upButton.style.cssText = buttonStyle + 'top: 20px; left: 50%;';
    downButton.style.cssText = buttonStyle + 'bottom: 20px; left: 50%;';
    upButton.style.display = 'none';
    downButton.style.display = 'none';

    const toggleStyle = `
        position: fixed;
        bottom: 20px;
        right: 20px;
        z-index: 9999;
        padding: 10px 20px;
        font-size: 14px;
        background-color: #333;
        color: #fff;
        border: none;
        border-radius: 5px;
        cursor: pointer;
        box-shadow: 0 0 10px rgba(0,0,0,0.5);
    `;

    toggleButton.style.cssText = toggleStyle;
    toggleButton.id = 'forumNavToggle';

    // Insert toggle button above any existing fixed button
    const existingButton = document.querySelector('button[style*="position:fixed"]');
    if (existingButton) {
        existingButton.parentNode.insertBefore(toggleButton, existingButton);
    } else {
        document.body.appendChild(toggleButton);
    }

    // Toggle visibility
    let isVisible = false;
    toggleButton.addEventListener('click', () => {
        isVisible = !isVisible;
        upButton.style.display = isVisible ? 'block' : 'none';
        downButton.style.display = isVisible ? 'block' : 'none';
        toggleButton.textContent = isVisible ? 'Hide Nav' : 'Show Nav';
    });

    // Button hover effects
    upButton.addEventListener('mouseover', () => upButton.style.opacity = '1');
    upButton.addEventListener('mouseout', () => upButton.style.opacity = '0.7');
    downButton.addEventListener('mouseover', () => downButton.style.opacity = '1');
    downButton.addEventListener('mouseout', () => downButton.style.opacity = '0.7');

    // Navigation functionality
    upButton.addEventListener('click', () => {
        const posts = Array.from(document.querySelectorAll('article')).sort((a, b) => getDocumentTop(a) - getDocumentTop(b));
        scrollToPost(posts, 'up');
    });

    downButton.addEventListener('click', () => {
        const posts = Array.from(document.querySelectorAll('article')).sort((a, b) => getDocumentTop(a) - getDocumentTop(b));
        scrollToPost(posts, 'down');
    });

    // Add buttons to the page
    document.body.appendChild(upButton);
    document.body.appendChild(downButton);
})();

updated the code below with a jump to top arrow for a better mobile experience. you can also move the button by pressing and holding it.



 
Last edited:
Top