Toggle body contenteditable state with menu buttons and force text selection
// ==UserScript==
// @name Contenteditable Toggle
// @namespace http://tampermonkey.net/
// @version 1.1
// @description Toggle body contenteditable state with menu buttons and force text selection
// @author StructSeeker
// @match *://*/*
// @grant GM_registerMenuCommand
// @run-at document-start
// ==/UserScript==
(function() {
'use strict';
// Force global text selection
function forceTextSelection() {
const style = document.createElement('style');
style.innerHTML = `
* {
user-select: text !important;
-webkit-user-select: text !important;
-moz-user-select: text !important;
-ms-user-select: text !important;
cursor: text !important;
}
`;
document.head.appendChild(style);
console.log("Global caret and text selection forced.");
}
// Register menu command to make body contenteditable true
GM_registerMenuCommand('Enable Contenteditable (true)', function() {
document.body.contentEditable = 'true';
console.log('Body contenteditable set to: true');
});
// Register menu command to make body contenteditable false
GM_registerMenuCommand('Disable Contenteditable (false)', function() {
document.body.contentEditable = 'false';
console.log('Body contenteditable set to: false');
});
// Register menu command to make body contenteditable plaintext-only
GM_registerMenuCommand('Plaintext Only Contenteditable', function() {
document.body.contentEditable = 'plaintext-only';
console.log('Body contenteditable set to: plaintext-only');
});
// Register menu command to force text selection globally
GM_registerMenuCommand('Force Text Selection', function() {
forceTextSelection();
});
})();