Bypass field restrictions when pasting data from the clipboard (Ctrl + V and right-click paste)
// ==UserScript==
// @name Field Raider Firefox
// @namespace http://tampermonkey.net/
// @version 1.77
// @description Bypass field restrictions when pasting data from the clipboard (Ctrl + V and right-click paste)
// @author Seth@WiiPlaza
// @match *://*/*
// @icon https://pbs.twimg.com/media/FR11DSvX0AI1W44.png
// @grant none
// ==/UserScript==
(function () {
'use strict';
const excludeRegex = /https?:\/\/.*?\.(facebook\.com|messenger\.com|google\.com|github\.com|imgur\.com).*/;
const includeRegex = /https?:\/\/.*/;
const isRestrictedSite = () => {
const location = window.location.href;
return includeRegex.test(location) && !excludeRegex.test(location);
};
const pasteText = async (element, text) => {
element.value = text;
await simulateKeyPresses(text);
};
const simulateKeyPresses = async (text) => {
for (let i = 0; i < text.length; i++) {
await new Promise(resolve => setTimeout(resolve, 20)); // Adjust timing if necessary
const eventSpace = new KeyboardEvent('keydown', { key: ' ' });
const eventBackspace = new KeyboardEvent('keydown', { key: 'Backspace' });
document.dispatchEvent(eventSpace);
document.dispatchEvent(eventBackspace);
}
};
const allowCopyAndPaste = (e) => {
e.stopImmediatePropagation();
return true;
};
const triggerPaste = (event) => {
if (event.ctrlKey && event.key === "v") {
navigator.clipboard.readText().then(text => {
const activeElement = document.activeElement;
if (activeElement.tagName === 'INPUT' || activeElement.tagName === 'TEXTAREA') {
pasteText(activeElement, text);
}
});
}
};
const forceEnableCopyPaste = (e) => {
e.stopImmediatePropagation();
return true;
};
['paste', 'copy'].forEach(event => {
document.addEventListener(event, forceEnableCopyPaste, true);
});
document.addEventListener('keyup', triggerPaste, false);
if (isRestrictedSite()) {
document.addEventListener('copy', allowCopyAndPaste, true);
document.addEventListener('paste', allowCopyAndPaste, true);
}
})();