The laugh a little thread 🤣

bnew

Veteran
Joined
Nov 1, 2015
Messages
55,764
Reputation
8,234
Daps
157,304
She got the talent for stand up


and fukk elon too :hhh: Have to manually edit the url from x to twitter to embed it


you need Home | Tampermonkey browser extension. on mobile there are some browsers that support importing userscripts.


since twitter officially changed it's links to x.com, I updated the userscript to work in html editor mode as well as bbcode editor mode. so anytime you paste a https://x.com or https://www.x.com url it'll automatically replace the domain with https://twitter.com. making the embeds work seamlessly since the site addons haven't been updated to support x.com.


Code:
// ==UserScript==
// @name         Replace X.com URLs with Twitter.com URLs
// @namespace    http://tampermonkey.net/
// @description  Replaces URLs containing "https://x.com" or "https://www.x.com" with "https://twitter.com".
// @author       Author Name
// @version      1.3
// @match        https://www.thecoli.com/threads/*
// @match        https://thecoli.com/threads/*
// @match        https://xenforo.com/community/forums/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // Function to get the current cursor position in a text input field
    function getCursorPosition(input) {
        let position = 0;
        if ('selectionStart' in input) {
            position = input.selectionStart;
        } else if (document.selection) {
            input.focus();
            let selection = document.selection.createRange();
            selection.moveStart('character', -input.value.length);
            position = selection.text.length;
        }
        return position;
    }

    // Function to set the cursor position in a text input field
    function setCursorPosition(input, position) {
        if (input.setSelectionRange) {
            input.focus();
            input.setSelectionRange(position, position);
        } else if (input.createTextRange) {
            let range = input.createTextRange();
            range.collapse(true);
            range.moveEnd('character', position);
            range.moveStart('character', position);
            range.select();
        }
    }

    // Function to replace URLs in text input fields and editable areas
    function replaceURLs(event) {
        // Get all editable fields on the page
        let editableFields = document.querySelectorAll('[contenteditable="true"], .fr-element.fr-view.fr-element-scroll-visible, textarea.input');

        editableFields.forEach(function(field) {
            // Save the current cursor position
            let cursorPosition = getCursorPosition(field);

            // Replace URLs in the value or innerHTML of the field
            let value = field.value || field.innerHTML;
            let newValue = value.replace(/https:\/\/(www\.)?x\.com/g, 'https://twitter.com');

            if (value !== newValue) {
                if (field.tagName.toLowerCase() === 'textarea' || field.tagName.toLowerCase() === 'input') {
                    field.value = newValue;
                } else {
                    field.innerHTML = newValue;
                }

                // Restore the cursor position
                let newCursorPosition = getCursorPosition(field);
                if (newCursorPosition > cursorPosition) {
                    setCursorPosition(field, newCursorPosition - (value.length - newValue.length));
                } else {
                    setCursorPosition(field, newCursorPosition);
                }
            }

            // Check if the user pressed Enter
            if (event.type === 'keydown' && event.key === 'Enter') {
                // Save the current cursor position
                cursorPosition = getCursorPosition(field);

                // Replace URLs in the new line
                let lines = (field.value || field.innerHTML).split('\n');
                lines[cursorPosition.line] = lines[cursorPosition.line].replace(/https:\/\/(www\.)?x\.com/g, 'https://twitter.com');
                if (field.tagName.toLowerCase() === 'textarea' || field.tagName.toLowerCase() === 'input') {
                    field.value = lines.join('\n');
                } else {
                    field.innerHTML = lines.join('\n');
                }

                // Restore the cursor position
                let newCursorPosition = getCursorPosition(field);
                if (newCursorPosition > cursorPosition) {
                    setCursorPosition(field, newCursorPosition - (value.length - lines.join('\n').length));
                } else {
                    setCursorPosition(field, newCursorPosition);
                }
            }
        });
    }

    // Add event listeners for input and keydown events on the document
    document.addEventListener('input', replaceURLs);
    document.addEventListener('keydown', replaceURLs);
})();

Changelog:

**Version 1.0 to Version 1.3**

1. **Expanded Functionality**:
- The script now handles both text input fields and editable areas (with the `contenteditable="true"` attribute) on the web pages.
- The script now replaces URLs in the BBCode editor mode, in addition to the HTML editor mode.

2. **Improved Cursor Position Handling**:
- The script now correctly restores the cursor position after replacing URLs, even when the text length changes.
- The script now handles the case where the user presses the Enter key, replacing URLs in the new line and restoring the cursor position correctly.

3. **Expanded Matching Patterns**:
- The script now matches URLs with both the "x.com" and "www.x.com" patterns.

4. **Improved Readability and Maintainability**:
- The script has been reorganized and formatted for better readability and maintainability.
- The script now uses more descriptive variable and function names.

5. **Increased Robustness**:
- The script now handles edge cases more gracefully, ensuring a smoother user experience.

Overall, the changes from Version 1.0 to Version 1.3 have significantly improved the functionality, reliability, and user experience of the script.[/icode]
 

bnew

Veteran
Joined
Nov 1, 2015
Messages
55,764
Reputation
8,234
Daps
157,304
I created a new script, cleared the default text in there, and pasted that code. It's enabled, but the extension says no script is running. Am I doing it wrong?

is this present in the script?
Code:
// @match        https://www.thecoli.com/threads/*
// @match        https://thecoli.com/threads/*

edit: might have misunderstood you.

just in case you're using incognito mode, you need to manually enable the extension to work in incognito mode in the extension options.

Lhv8leO.png


it should work once the page loads...
 
Last edited:

SupaHotIce

All Star
Joined
Jan 8, 2015
Messages
3,369
Reputation
500
Daps
8,815
is this present in the script?
Code:
// @match        https://www.thecoli.com/threads/*
// @match        https://thecoli.com/threads/*

edit: might have misunderstood you.

just in case you're using incognito mode, you need to manually enable the extension to work in incognito mode in the extension options.

Lhv8leO.png


it should work once the page loads...
Ok for some reason the script is showing up in the extension's dropdown list now, but it still doesn't convert the url
 
Top