Printables - Copy/Paste bug?
I was posting some models in Printables and I was copy-pasting the text I wrote into the text fields.
9 times out of ten, the copy-paste would paste twice, duplicating almost all my text.
I am pretty sure it's not my keyboard...
RE: Printables - Copy/Paste bug?
This also happens when you right click and use paste. It pastes twice instead of once.
RE: Printables - Copy/Paste bug?
Hi, I just tried this and I'm not seeing the same issue. Both methods worked as expected for me.
RE: Printables - Copy/Paste bug?
I tried it on two computers. It happens on both. 2x paste.
If it matters, I am using Firefox.
I just did an additional test in Edge, and that works just fine.
RE: Printables - Copy/Paste bug?
that checks out as to why I probably wasn't seeing it - I was on chrome
RE:
I can confirm this happens for me as well on firefox.
Here is a solution / workaround from Claude AI that works on my computer when pasting to the JS console. Userscripts/Greasemonkey should work as well to make it permanent:
// Firefox Double-Paste Fix for CKEditor on Printables.com
// This fixes the bug where pasting text enters it twice in Firefox
(function() {
'use strict';
// Only apply fix in Firefox
if (navigator.userAgent.toLowerCase().indexOf('firefox') === -1) {
return;
}
// Wait for CKEditor to be ready
function applyFix() {
const ckEditor = document.querySelector('.ck-editor__editable');
if (!ckEditor) {
// CKEditor not loaded yet, try again
setTimeout(applyFix, 500);
return;
}
// Track if we've already processed this paste event
let isProcessing = false;
ckEditor.addEventListener('paste', function(e) {
if (isProcessing) {
// Already handling this paste, prevent duplicate
e.stopImmediatePropagation();
e.preventDefault();
return;
}
// Mark as processing
isProcessing = true;
// Stop the event from propagating to other handlers
e.stopImmediatePropagation();
// Allow CKEditor's paste handler to process once
const pasteEvent = new ClipboardEvent('paste', {
clipboardData: e.clipboardData,
bubbles: true,
cancelable: true
});
// Dispatch the cleaned event
setTimeout(() => {
e.target.dispatchEvent(pasteEvent);
// Reset flag after a short delay
setTimeout(() => {
isProcessing = false;
}, 100);
}, 0);
}, true); // Capture phase - intercepts before CKEditor
console.log('Firefox CKEditor paste fix applied');
}
// Start applying the fix
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', applyFix);
} else {
applyFix();
}
})();
It also says it's possible to fix it in the source as follows:
ClassicEditor.create(element, {
// ... other config
typing: {
// This helps prevent double paste in Firefox
undoStep: 20
}
})
.then(editor => {
// Firefox-specific paste fix
const editable = editor.editing.view.document;
editable.on('paste', (evt, data) => {
// Ensure preventDefault is called
data.preventDefault();
}, { priority: 'highest' });
})
.catch(error => {
console.error(error);
});
RE: Printables - Copy/Paste bug?
Following Tampermonkey script works for me:
// ==UserScript==
// @name Fix Printables double paste
// @namespace http://tampermonkey.net/
// @version 2025-09-30
// @description Fixes the bug where pasting text in CKEditor enters it twice in Firefox
// @author You
// @match https://www.printables.com/*
// @match https://printables.com/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=printables.com
// @grant none
// @run-at document-idle
// ==/UserScript==
// Firefox Double-Paste Fix for CKEditor on Printables.com
// This fixes the bug where pasting text enters it twice in Firefox
(function() {
'use strict';
// Only apply fix in Firefox
if (navigator.userAgent.toLowerCase().indexOf('firefox') === -1) {
return;
}
// Wait for CKEditor to be ready
function applyFix() {
const ckEditor = document.querySelector('.ck-editor__editable');
if (!ckEditor) {
// CKEditor not loaded yet, try again
setTimeout(applyFix, 500);
return;
}
// Track if we've already processed this paste event
let isProcessing = false;
ckEditor.addEventListener('paste', function(e) {
if (isProcessing) {
// Already handling this paste, prevent duplicate
e.stopImmediatePropagation();
e.preventDefault();
return;
}
// Mark as processing
isProcessing = true;
// Stop the event from propagating to other handlers
e.stopImmediatePropagation();
// Allow CKEditor's paste handler to process once
const pasteEvent = new ClipboardEvent('paste', {
clipboardData: e.clipboardData,
bubbles: true,
cancelable: true
});
// Dispatch the cleaned event
setTimeout(() => {
e.target.dispatchEvent(pasteEvent);
// Reset flag after a short delay
setTimeout(() => {
isProcessing = false;
}, 100);
}, 0);
}, true); // Capture phase - intercepts before CKEditor
console.log('Firefox CKEditor paste fix applied');
}
// Start applying the fix
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', applyFix);
} else {
applyFix();
}
})();