-m "Copy & Paste wird unterbunden"
This commit is contained in:
parent
80c40ab983
commit
ae8b313dea
3 changed files with 96 additions and 8 deletions
|
|
@ -98,6 +98,11 @@
|
|||
"lesson": 20,
|
||||
"title": "JSON Parsing",
|
||||
"text": "{\n\"user\": \"dev\",\n\"skills\": [\"Python\", \"C++\", \"JSON\"],\n\"active\": true,\n\"projects\": [{\n \"title\": \"Tipptrainer\",\n \"completed\": false\n }]\n} // Beachte Anführungszeichen und Doppelpunkte"
|
||||
},
|
||||
{
|
||||
"lesson": 21,
|
||||
"title": "Kurze Test Lektion",
|
||||
"text": "Dies ist nur ein kurzer Text."
|
||||
}
|
||||
]
|
||||
|
||||
|
|
|
|||
|
|
@ -130,6 +130,10 @@ body {
|
|||
font-weight: 500;
|
||||
line-height: 1.6;
|
||||
letter-spacing: 0.5px;
|
||||
user-select: none; /* Verhindert Textauswahl */
|
||||
-webkit-user-select: none; /* Für Safari */
|
||||
-moz-user-select: none; /* Für Firefox */
|
||||
-ms-user-select: none; /* Für Internet Explorer/Edge */
|
||||
}
|
||||
|
||||
#user-input {
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ document.addEventListener('DOMContentLoaded', function() {
|
|||
document.getElementById('theme-toggle').addEventListener('click', toggleTheme);
|
||||
|
||||
const userInput = document.getElementById('user-input');
|
||||
const targetText = document.getElementById('target-text');
|
||||
const targetTextElement = document.getElementById('target-text');
|
||||
const nextBtn = document.getElementById('next-btn');
|
||||
const endBtn = document.getElementById('end-btn');
|
||||
|
||||
|
|
@ -57,9 +57,90 @@ document.addEventListener('DOMContentLoaded', function() {
|
|||
// Zeige die erste Zeile an
|
||||
updateLineDisplay();
|
||||
|
||||
// Verhindere Copy & Paste für das Vorlagenfeld
|
||||
targetTextElement.addEventListener('copy', function(event) {
|
||||
event.preventDefault();
|
||||
alert('Kopieren aus der Vorlage ist nicht erlaubt! Bitte tippen Sie den Text manuell.');
|
||||
});
|
||||
|
||||
targetTextElement.addEventListener('cut', function(event) {
|
||||
event.preventDefault();
|
||||
alert('Ausschneiden aus der Vorlage ist nicht erlaubt!');
|
||||
});
|
||||
|
||||
targetTextElement.addEventListener('contextmenu', function(event) {
|
||||
event.preventDefault();
|
||||
return false;
|
||||
});
|
||||
|
||||
// Fokus auf das Eingabefeld setzen
|
||||
userInput.focus();
|
||||
|
||||
// Verhindere Copy & Paste für das Eingabefeld
|
||||
userInput.addEventListener('paste', function(event) {
|
||||
event.preventDefault();
|
||||
alert('Einfügen (Paste) ist nicht erlaubt! Bitte tippen Sie den Text manuell.');
|
||||
});
|
||||
|
||||
userInput.addEventListener('copy', function(event) {
|
||||
event.preventDefault();
|
||||
alert('Kopieren (Copy) ist nicht erlaubt!');
|
||||
});
|
||||
|
||||
userInput.addEventListener('cut', function(event) {
|
||||
event.preventDefault();
|
||||
alert('Ausschneiden (Cut) ist nicht erlaubt!');
|
||||
});
|
||||
|
||||
// Verhindere Drag & Drop
|
||||
userInput.addEventListener('drop', function(event) {
|
||||
event.preventDefault();
|
||||
alert('Drag & Drop ist nicht erlaubt! Bitte tippen Sie den Text manuell.');
|
||||
});
|
||||
|
||||
// Verhindere das Einfügen über das Kontextmenü (rechte Maustaste)
|
||||
userInput.addEventListener('contextmenu', function(event) {
|
||||
event.preventDefault();
|
||||
return false;
|
||||
});
|
||||
|
||||
// Verhindere das Einfügen über Tastenkombinationen (Strg+V, Cmd+V, etc.)
|
||||
userInput.addEventListener('keydown', function(event) {
|
||||
// Strg+V oder Cmd+V
|
||||
if ((event.ctrlKey || event.metaKey) && event.key === 'v') {
|
||||
event.preventDefault();
|
||||
alert('Einfügen (Strg+V / Cmd+V) ist nicht erlaubt! Bitte tippen Sie den Text manuell.');
|
||||
return false;
|
||||
}
|
||||
|
||||
// Strg+C oder Cmd+C
|
||||
if ((event.ctrlKey || event.metaKey) && event.key === 'c') {
|
||||
event.preventDefault();
|
||||
alert('Kopieren (Strg+C / Cmd+C) ist nicht erlaubt!');
|
||||
return false;
|
||||
}
|
||||
|
||||
// Strg+X oder Cmd+X
|
||||
if ((event.ctrlKey || event.metaKey) && event.key === 'x') {
|
||||
event.preventDefault();
|
||||
alert('Ausschneiden (Strg+X / Cmd+X) ist nicht erlaubt!');
|
||||
return false;
|
||||
}
|
||||
|
||||
// Strg+A oder Cmd+A (Selektion verhindern)
|
||||
if ((event.ctrlKey || event.metaKey) && event.key === 'a') {
|
||||
event.preventDefault();
|
||||
alert('Selektion (Strg+A / Cmd+A) ist nicht erlaubt!');
|
||||
return false;
|
||||
}
|
||||
|
||||
// Rechtsklick-Menü-Tasten (Context Menu key)
|
||||
if (event.key === 'ContextMenu') {
|
||||
event.preventDefault();
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
// Starte die Zeitmessung beim ersten Tastendruck und zähle Tastaturanschläge
|
||||
userInput.addEventListener('keydown', function(event) {
|
||||
const cursorPosition = userInput.selectionStart;
|
||||
|
|
@ -186,11 +267,11 @@ document.addEventListener('DOMContentLoaded', function() {
|
|||
if (data.error) {
|
||||
alert('Fehler: ' + data.error);
|
||||
} else {
|
||||
lines = data.text.split('\n');
|
||||
lines = data.text.split(/\r?\n/);
|
||||
currentLineIndex = 0;
|
||||
completedLines = [];
|
||||
currentLineInput = '';
|
||||
fullText = lines.join('\n');
|
||||
fullText = data.text;
|
||||
startTime = null;
|
||||
keyStrokeCount = 0; // Zurücksetzen des Tastaturanschlagszählers
|
||||
updateLineDisplay();
|
||||
|
|
@ -223,11 +304,11 @@ document.addEventListener('DOMContentLoaded', function() {
|
|||
})
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
lines = data.text.split('\n');
|
||||
lines = data.text.split(/\r?\n/);
|
||||
currentLineIndex = 0;
|
||||
completedLines = [];
|
||||
currentLineInput = '';
|
||||
fullText = lines.join('\n');
|
||||
fullText = data.text;
|
||||
startTime = null;
|
||||
keyStrokeCount = 0; // Zurücksetzen des Tastaturanschlagszählers
|
||||
updateLineDisplay();
|
||||
|
|
@ -308,7 +389,6 @@ document.addEventListener('DOMContentLoaded', function() {
|
|||
|
||||
// Text hervorheben
|
||||
function updateTextHighlighting(userInput, currentText) {
|
||||
const targetElement = document.getElementById('target-text');
|
||||
let highlightedText = '';
|
||||
|
||||
// Verwende den ursprünglichen Text für die Anzeige
|
||||
|
|
@ -354,12 +434,11 @@ document.addEventListener('DOMContentLoaded', function() {
|
|||
}
|
||||
}
|
||||
|
||||
targetElement.innerHTML = highlightedText;
|
||||
targetTextElement.innerHTML = highlightedText;
|
||||
}
|
||||
|
||||
// Hilfsfunktion zum Aktualisieren der Zeilenanzeige
|
||||
function updateLineDisplay() {
|
||||
const targetElement = document.getElementById('target-text');
|
||||
// Setze nur die aktuelle Zeile mit Hervorhebung
|
||||
updateTextHighlighting('', lines[currentLineIndex]);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue