Ich schlage vor, das Pre zu vergessen und es einfach in ein Textfeld zu setzen.
Die Einrückung bleibt erhalten, und Ihr Code wird nicht in der Mitte eines Pfades oder ähnlichem umbrochen.
Es ist auch einfacher, einen Textbereich in einem Textbereich auszuwählen, wenn Sie ihn in die Zwischenablage kopieren möchten.
Das Folgende ist ein php-Auszug, wenn Sie also nicht in php arbeiten, wird die Art und Weise, wie Sie die html-Sonderzeichen verpacken, variieren.
<textarea style="font-family:monospace;" onfocus="copyClipboard(this);"><?=htmlspecialchars($codeBlock);?></textarea>
Informationen zum Kopieren von Text in die Zwischenablage in js finden Sie hier: Wie kann ich in JavaScript in die Zwischenablage kopieren? .
Aber...
Ich habe mir gerade die Stackoverflow-Codeblöcke angesehen und sie sind in einem <code>-Tag verpackt, der in einem <pre>-Tag mit css verpackt ist ...
code {
background-color: #EEEEEE;
font-family: Consolas,Menlo,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New,monospace,serif;
}
pre {
background-color: #EEEEEE;
font-family: Consolas,Menlo,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New,monospace,serif;
margin-bottom: 10px;
max-height: 600px;
overflow: auto;
padding: 5px;
width: auto;
}
Außerdem wird der Inhalt der Stackoverflow-Codeblöcke syntaktisch hervorgehoben, indem (ich glaube) http://code.google.com/p/google-code-prettify/ .
Es ist eine nette Einrichtung, aber Im nur gehen mit textareas für jetzt.