Block um Code zum Kopieren einzufügen

Anwendungen für Webseiten. Künstliche Intelligenz verwenden.
Volker
Moderator
Moderator
Beiträge: 1542
Registriert: Sa 12. Dez 2020, 22:35

Block um Code zum Kopieren einzufügen

Ungelesener Beitrag von Volker »

Hier mal auf die Schnelle ein Block zum EInfügen von Code in Mobirise, den der User per Button Kopieren kann:

Korrigierte Version !! HTML und CSS und Java Script in einem Block


HTML :

Code: Alles auswählen

<section class="mbr-section article content10 codeview" group="Code Triple Final Highlight">

  <!-- Syntax Highlighting -->
  <link rel="stylesheet"
        href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/atom-one-dark.min.css">
  <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js"></script>
  <script>
  document.addEventListener("DOMContentLoaded", () => {
    document.querySelectorAll("pre.code-area").forEach(el => hljs.highlightElement(el));
  });
  </script>

  <mbr-parameters>
    <input type="range" inline title="Abstand oben" name="paddingTop" min="0" max="8" step="1" value="2">
    <input type="range" inline title="Abstand unten" name="paddingBottom" min="0" max="8" step="1" value="2">
    <input type="range" inline title="Textbreite (%)" name="innerWidth" min="50" max="100" step="5" value="80">
  </mbr-parameters>

  <div class="container" mbr-style="{'padding-top': paddingTop + 'rem','padding-bottom': paddingBottom + 'rem'}">
    <div class="inner-container" mbr-style="{'width': innerWidth + '%'}">

      <!-- HTML-Code -->
      <div class="code-box position-relative mb-4">
        <h5 class="text-light mb-2">HTML-Code</h5>
        <button class="copy-btn btn btn-sm btn-primary position-absolute top-0 end-0 m-2"
                data-target="html">Kopieren (HTML)</button>
        <pre class="code-area language-html" mbr-text>&lt;div class="demo"&gt;Hallo Welt!&lt;/div&gt;</pre>
      </div>

      <!-- CSS-Code -->
      <div class="code-box position-relative mb-4">
        <h5 class="text-light mb-2">CSS-Code</h5>
        <button class="copy-btn btn btn-sm btn-success position-absolute top-0 end-0 m-2"
                data-target="css">Kopieren (CSS)</button>
        <pre class="code-area language-css" mbr-text>.demo {
  background: orange;
  padding: 20px;
  border-radius: 6px;
  color: white;
}</pre>
      </div>

      <!-- JS-Code -->
      <div class="code-box position-relative">
        <h5 class="text-light mb-2">JavaScript-Code</h5>
        <button class="copy-btn btn btn-sm btn-warning position-absolute top-0 end-0 m-2"
                data-target="js">Kopieren (JS)</button>
        <pre class="code-area language-javascript" mbr-text>document.addEventListener("DOMContentLoaded", () =&gt; {
  console.log("JS läuft!");
});</pre>
      </div>

    </div>
  </div>

  <!-- Kopier-Skript (unverändert, funktioniert für alle Buttons) -->
  <script>
  (function(){
    function copyText(txt){
      if (navigator.clipboard && navigator.clipboard.writeText) {
        return navigator.clipboard.writeText(txt).catch(()=>fallback(txt));
      }
      return fallback(txt);
    }
    function fallback(txt){
      const ta=document.createElement("textarea");
      ta.value=txt;
      ta.style.position="fixed";ta.style.opacity="0";
      document.body.appendChild(ta);ta.select();
      try{document.execCommand("copy");}catch(e){}
      document.body.removeChild(ta);
      return Promise.resolve();
    }

    document.addEventListener("click",e=>{
      const btn=e.target.closest(".copy-btn");
      if(!btn)return;
      const block=btn.closest(".code-box");
      if(!block)return;
      const pre=block.querySelector("pre.code-area");
      const code=pre.textContent.trim();
      copyText(code).then(()=>{
        const old=btn.textContent;
        btn.textContent="Kopiert!";
        btn.classList.add("btn-dark");
        setTimeout(()=>{
          btn.textContent=old;
          btn.classList.remove("btn-dark");
        },1200);
      });
    });
  })();
  </script>

</section>


CSS:

Code: Alles auswählen

/* === Volker Codeblock Triple + Highlight === */

section.codeview { color:#eee; }

section.codeview .code-area {
  background:#1e1e1e;
  color:#f8f8f2;
  font-family:Consolas,monospace;
  font-size:.9rem;
  line-height:1.4;
  padding:20px;
  border-radius:8px;
  overflow:auto;
  box-shadow:0 2px 8px rgba(0,0,0,.25);
  border:1px solid rgba(255,255,255,.08);
  max-height:70vh;
  white-space:pre;
}

/* Buttons */
section.codeview .copy-btn {
  z-index:10;
  opacity:.9;
  transition:opacity .2s ease,transform .05s ease;
}
section.codeview .copy-btn:hover { opacity:1; }
section.codeview .copy-btn:active { transform:translateY(1px); }

section.codeview h5 { color:#ccc;font-weight:600; }

/* Highlight.js Farben */
section.codeview .hljs {
  background:#1e1e1e !important;
  color:#eaeaea;
  border-radius:8px;
  font-family:Consolas,monospace;
  font-size:.9rem;
  line-height:1.4;
}
section.codeview .hljs-tag,
section.codeview .hljs-name { color:#569CD6; }
section.codeview .hljs-attr,
section.codeview .hljs-keyword { color:#9CDCFE; }
section.codeview .hljs-string { color:#CE9178; }
section.codeview .hljs-number,
section.codeview .hljs-literal { color:#B5CEA8; }
section.codeview .hljs-comment { color:#6A9955; }

/* Scrollbar */
section.codeview .code-area::-webkit-scrollbar { width:10px; height:10px; }
section.codeview .code-area::-webkit-scrollbar-thumb { background:#3a3a3a; border-radius:8px; }
section.codeview .code-area::-webkit-scrollbar-track { background:#1e1e1e; }

@media(max-width:768px){
  section.codeview .code-area { max-height:60vh; padding:15px; }
}



Gruß Volker
Volker
Moderator
Moderator
Beiträge: 1542
Registriert: Sa 12. Dez 2020, 22:35

Re: Block um Code zum Kopieren einzufügen

Ungelesener Beitrag von Volker »

Nimm meinen Block, der ist Fehlerfrei ;)

https://www.niederastroth.de/mega.html
Gruß Volker
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 7861
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Block um Code zum Kopieren einzufügen

Ungelesener Beitrag von Tommy Herrmann »

Nee - ich habe da zwei Dutzend eigene Änderungen - das hat mich Stunden gekostet. Meine CSS ist viel besser :D
Volker
Moderator
Moderator
Beiträge: 1542
Registriert: Sa 12. Dez 2020, 22:35

Re: Block um Code zum Kopieren einzufügen

Ungelesener Beitrag von Volker »

Ja Deine CSS ist besser bei Mega Menü, werde ich auch so nehmen.

Ich meine meinen Code Block. da ist meiner besser weil Syntax Highlight ;)
Gruß Volker
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 7861
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Block um Code zum Kopieren einzufügen

Ungelesener Beitrag von Tommy Herrmann »

Du hast da keine <textarea> oder? Das kann Mobirise nämlich nicht mit geschweiften Klammern.

Jetzt habe ich erst einmal die Faxen dicke :eek:
Volker
Moderator
Moderator
Beiträge: 1542
Registriert: Sa 12. Dez 2020, 22:35

Re: Block um Code zum Kopieren einzufügen

Ungelesener Beitrag von Volker »

Du kannst den Code direkt auf der Arbeitsfäche in den Block kopieren. Zeilen Nr. aus machen sieht kacke aus. Aber dann CSS oder HTM auswhälen. Probier den Block einfach mal aus.
Gruß Volker
Volker
Moderator
Moderator
Beiträge: 1542
Registriert: Sa 12. Dez 2020, 22:35

Re: Block um Code zum Kopieren einzufügen

Ungelesener Beitrag von Volker »

Deine CSS ist echt klasse - Du bist halt der CSS Gott Vater :D

Hab ich 1:1 so übernommen ;)

https://www.niederastroth.de/
Gruß Volker
Volker
Moderator
Moderator
Beiträge: 1542
Registriert: Sa 12. Dez 2020, 22:35

Re: Block um Code zum Kopieren einzufügen

Ungelesener Beitrag von Volker »

So, nun habe ich einen geilen Block gebastelt der HTML, CSS und JAVA darstellen kann mit der jeweiligen Syntax.

Hier ein Video dazu :D

Gruß Volker
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 7861
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Block um Code zum Kopieren einzufügen

Ungelesener Beitrag von Tommy Herrmann »

Volker,

ich habe das Script zum Kopieren getestet und es funktioniert bei mir nicht :(

Ich hatte den Code, den Du oben gepostet hast verwendet:

viewtopic.php?p=18683#p18683

Der Code auf Deiner Beispielseite sieht im Quellcode auch komplett anders aus :confused:

"Hallo Welt" als HTML-Code geht ja wunderbar (ist ja kein Code - sondern nur Text) …

… aber kein echtes Script - damit kommt Mobirise nicht zurecht :eek:

Wieso hattest Du den gesamten Code von Mobirise raus genommen, der muss drinnen bleiben, sonst kann man den Block doch gar nicht mehr bedienen :confused: Den einen Parameter für die Toolbox braucht man auch nicht, denn man kann die Breite ja bereits am Block von Mobirise regeln.

Füge das mal in Deinen HTML-Code Bereich ein (dabei habe ich das noch so schön aufgeräumt, denn Dein Script war echt kaum lesbar, da vollkommen falsch eingerückt):

Code: Alles auswählen

                <!-- Syntax Highlighting -->
                <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/atom-one-dark.min.css">
                <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js"></script>
                <script>
                    document.addEventListener("DOMContentLoaded", () => {
                        document.querySelectorAll("pre.code-area").forEach(el => hljs.highlightElement(el));
                    });
                </script>
                
                <!-- Start Copy Script -->                
                <div class="container" mbr-style="{'padding-top': paddingTop + 'rem','padding-bottom': paddingBottom + 'rem'}">
                    <div class="inner-container" mbr-style="{'width': innerWidth + '%'}">
                        
                        <!-- HTML-Code -->
                        <div class="code-box position-relative mb-4">
                            
                            <h5 class="text-light mb-2">HTML-Code</h5>
                            <button class="copy-btn btn btn-sm btn-primary position-absolute top-0 end-0 m-2" data-target="html">
                                Kopieren (HTML)
                            </button>
                            
                            <pre class="code-area language-html" mbr-text>
                                
                                <!-- Start paste -->
                                Hallo Welt!
                                <!-- End   paste -->
                                
                            </pre>
                            
                        </div>
                        
                        <!-- CSS-Code -->
                        <div class="code-box position-relative mb-4">
                            
                            <h5 class="text-light mb-2">CSS-Code</h5>
                            <button class="copy-btn btn btn-sm btn-success position-absolute top-0 end-0 m-2" data-target="css">
                                Kopieren (CSS)
                            </button>
                            
                            <pre class="code-area language-css" mbr-text>
                                
                                <!-- Start paste -->
                                .demo { 
                                background: orange;
                                padding: 20px;
                                border-radius: 6px;
                                color: white;
                                }
                                <!-- End   paste -->
                                
                            </pre>
                            
                        </div>
                        
                        <!-- JS-Code -->
                        <div class="code-box position-relative">
                            
                            <h5 class="text-light mb-2">JavaScript-Code</h5>
                            <button class="copy-btn btn btn-sm btn-warning position-absolute top-0 end-0 m-2" data-target="js">
                                Kopieren (JS)
                            </button>
                            
                            <pre class="code-area language-javascript" mbr-text>
                                
                                <!-- Start paste -->                            
                                JS läuft!
                                <!-- End   paste -->                                
                                
                            </pre>
                            
                        </div>
                        
                    </div>
                </div>
                <!-- End Copy Script -->
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 7861
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Block um Code zum Kopieren einzufügen

Ungelesener Beitrag von Tommy Herrmann »

Ich konnte jetzt (hoffentlich) alle Stolpersteine von Mobirise bei mir entfernen.

Ich habe lange getestet und denke, dass ich nun HTML, CSS und JS Code zum Kopieren darstellen kann. Dafür habe ich dann auch gleich noch diesen Highlightet Code eingebaut.

Hier meine Testseite:

https://www.mobirise-tutorials.com/Temp ... #Code-Copy
Volker
Moderator
Moderator
Beiträge: 1542
Registriert: Sa 12. Dez 2020, 22:35

Re: Block um Code zum Kopieren einzufügen

Ungelesener Beitrag von Volker »

Hallo Tommy,

ich habe den Code hier aus dem Forum bei mir gerade nochmals getestet und kann da echt keinen Fehler finden.
Wenn ich dann den Block in Mobirise aufrufe kann ich da ohne Probleme Code aus z.B. einem anderen Block kopieren und dort einfügen. Bei der Vorschau im Browser ist dann auch der Code 1:1 so drin das er kopiert werden kann.

Dann habe ich den Code von meiner Webseite getestet: https://www.niederastroth.de/page15.html

Auch das funktioniert einwandfrei. Mehr kann ich dazu nicht sagen.
Gruß Volker
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 7861
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Block um Code zum Kopieren einzufügen

Ungelesener Beitrag von Tommy Herrmann »

Moin,

hier Dein Quellcode von Deiner Beispiel-Webseite.

Die ganzen </div><div> vorne wurden bei mir nicht generiert und wieso ist der zu kopierende Text denn überhaupt in Deinem Quellcode maskiert (HTML-Sonderzeichen) formatiert:

Code: Alles auswählen

zum Beispiel anstelle von:

</script>

eben maskiert:

&lt;/script&gt;
... wenn dieser doch in einem <pre> Tag steht.

Bei mir wird überhaupt nichts maskiert - logisch - wie auch mit Deinem Code :confused:

Code: Alles auswählen

<pre class="code-area language-html">

Code: Alles auswählen

  <div class="container" style="padding-top: 8rem; padding-bottom: 2rem;">
    <div class="inner-container" style="width: 100%;">

      <!-- HTML-Code -->
      <div class="code-box position-relative mb-4">
        <h5 class="text-light mb-2">HTML-Code</h5>
        <button class="copy-btn btn btn-sm btn-primary position-absolute top-0 end-0 m-2" data-target="html" data-bs-target="html">Kopieren (HTML)</button>
        <pre class="code-area language-html">&lt;section class="mbr-section article content10 codeview" group="Code Triple Final Highlight"&gt;
<div>
</div><div>  &lt;!-- Syntax Highlighting --&gt;
</div><div>  &lt;link rel="stylesheet"
</div><div>        href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/atom-one-dark.min.css"&gt;
</div><div>  &lt;script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js"&gt;&lt;/script&gt;
</div><div>  &lt;script&gt;
</div><div>  document.addEventListener("DOMContentLoaded", () =&gt; {
</div><div>    document.querySelectorAll("pre.code-area").forEach(el =&gt; hljs.highlightElement(el));
</div><div>  });
</div><div>  &lt;/script&gt;
</div><div>
</div><div>  &lt;mbr-parameters&gt;
</div><div>    &lt;input type="range" inline title="Abstand oben" name="paddingTop" min="0" max="8" step="1" value="2"&gt;
</div><div>    &lt;input type="range" inline title="Abstand unten" name="paddingBottom" min="0" max="8" step="1" value="2"&gt;
</div><div>    &lt;input type="range" inline title="Textbreite (%)" name="innerWidth" min="50" max="100" step="5" value="80"&gt;
</div><div>  &lt;/mbr-parameters&gt;
</div><div>
</div><div>  &lt;div class="container" mbr-style="{'padding-top': paddingTop + 'rem','padding-bottom': paddingBottom + 'rem'}"&gt;
</div><div>    &lt;div class="inner-container" mbr-style="{'width': innerWidth + '%'}"&gt;
</div><div>
</div><div>      &lt;!-- HTML-Code --&gt;
</div><div>      &lt;div class="code-box position-relative mb-4"&gt;
</div><div>        &lt;h5 class="text-light mb-2"&gt;HTML-Code&lt;/h5&gt;
</div><div>        &lt;button class="copy-btn btn btn-sm btn-primary position-absolute top-0 end-0 m-2"
</div><div>                data-target="html"&gt;Kopieren (HTML)&lt;/button&gt;
</div><div>        &lt;pre class="code-area language-html" mbr-text&gt;&amp;lt;div class="demo"&amp;gt;Hallo Welt!&amp;lt;/div&amp;gt;&lt;/pre&gt;
</div><div>      &lt;/div&gt;
</div><div>
</div><div>      &lt;!-- CSS-Code --&gt;
</div><div>      &lt;div class="code-box position-relative mb-4"&gt;
</div><div>        &lt;h5 class="text-light mb-2"&gt;CSS-Code&lt;/h5&gt;
</div><div>        &lt;button class="copy-btn btn btn-sm btn-success position-absolute top-0 end-0 m-2"
</div><div>                data-target="css"&gt;Kopieren (CSS)&lt;/button&gt;
</div><div>        &lt;pre class="code-area language-css" mbr-text&gt;.demo {
</div><div>  background: orange;
</div><div>  padding: 20px;
</div><div>  border-radius: 6px;
</div><div>  color: white;
</div><div>}&lt;/pre&gt;
</div><div>      &lt;/div&gt;
</div><div>
</div><div>      &lt;!-- JS-Code --&gt;
</div><div>      &lt;div class="code-box position-relative"&gt;
</div><div>        &lt;h5 class="text-light mb-2"&gt;JavaScript-Code&lt;/h5&gt;
</div><div>        &lt;button class="copy-btn btn btn-sm btn-warning position-absolute top-0 end-0 m-2"
</div><div>                data-target="js"&gt;Kopieren (JS)&lt;/button&gt;
</div><div>        &lt;pre class="code-area language-javascript" mbr-text&gt;document.addEventListener("DOMContentLoaded", () =&amp;gt; {
</div><div>  console.log("JS läuft!");
</div><div>});&lt;/pre&gt;
</div><div>      &lt;/div&gt;
</div><div>
</div><div>    &lt;/div&gt;
</div><div>  &lt;/div&gt;
</div><div>
</div><div>  &lt;!-- Kopier-Skript (unverändert, funktioniert für alle Buttons) --&gt;
</div><div>  &lt;script&gt;
</div><div>  (function(){
</div><div>    function copyText(txt){
</div><div>      if (navigator.clipboard &amp;&amp; navigator.clipboard.writeText) {
</div><div>        return navigator.clipboard.writeText(txt).catch(()=&gt;fallback(txt));
</div><div>      }
</div><div>      return fallback(txt);
</div><div>    }
</div><div>    function fallback(txt){
</div><div>      const ta=document.createElement("textarea");
</div><div>      ta.value=txt;
</div><div>      ta.style.position="fixed";ta.style.opacity="0";
</div><div>      document.body.appendChild(ta);ta.select();
</div><div>      try{document.execCommand("copy");}catch(e){}
</div><div>      document.body.removeChild(ta);
</div><div>      return Promise.resolve();
</div><div>    }
</div><div>
</div><div>    document.addEventListener("click",e=&gt;{
</div><div>      const btn=e.target.closest(".copy-btn");
</div><div>      if(!btn)return;
</div><div>      const block=btn.closest(".code-box");
</div><div>      if(!block)return;
</div><div>      const pre=block.querySelector("pre.code-area");
</div><div>      const code=pre.textContent.trim();
</div><div>      copyText(code).then(()=&gt;{
</div><div>        const old=btn.textContent;
</div><div>        btn.textContent="Kopiert!";
</div><div>        btn.classList.add("btn-dark");
</div><div>        setTimeout(()=&gt;{
</div><div>          btn.textContent=old;
</div><div>          btn.classList.remove("btn-dark");
</div><div>        },1200);
</div><div>      });
</div><div>    });
</div><div>  })();
</div><div>  &lt;/script&gt;
</div><div>
</div><div>&lt;/section&gt;
</div><div><br></div></pre>
      </div>
Wenn ich den kopierten Quellcode Deiner Seite in den bei mir eingebauten Kopierblock oder eben auch meinen Quellcode von diesem Block dort einbaue, dann wird der im Kopierblock falsch dargestellt. Zum Beispiel werden die Regler nicht als Code dargestellt, sondern als bedienbare Regler (siehe Screenshot unten).

Egal - wenn es bei Dir klappt ist es ja gut. :tu:

Vielleicht liegt der Fehler auch bei mir, ich hatte jetzt keine Lust danach wieder stundenlang zu suchen. Du solltest aber dennoch den Code korrekt einrücken, sonst weiß echt niemand wie man das bedienen muss.

Ich habe das gestern wieder gelöscht, weil ich ja meinen eigenen Kopierblock habe.





Vielleicht liegt es auch an meinem Umbau und ich habe einen Fehler gemacht :confused:

Dein Block war so für mich nicht brauchbar, da er nicht zentrierbar ist und Du alle Mobirise-Parameter gelöscht hast, die ich benötige. Dafür hattest Du einen überflüssigen Parameter für die Breiten-Regelung hinzugefügt, den es ja in Mobirise bereits gab:

Code: Alles auswählen

<input type="range" name="textWidth" title="Width" min="4" max="12" value="10" step="1">
Dann habe ich in Deinen (doppelten) Code zwar drinnen gelassen aber an die richtige Stelle zu den Block-Parametern gepackt und mit Header-Tag optisch getrennt:

Code: Alles auswählen

<header>Breite Code Bereich</header>
<input type="range" inline="" title="Textbreite (%)" name="innerWidth" min="50" max="100" step="5" value="100">


Weiterhin kann bei dem wirklich grausam formatierten und falsch eingerücktem Code keiner erkennen, wo man den darzustellenden Code tatsächlich einfügen soll :eek: Das habe ich unten nun besonders eingerückt und auch kommentiert, sodass man das jetzt überhaupt erst einmal erkennen kann.

Code: Alles auswählen

<!-- Start paste -->
Hallo Welt!
<!-- End   paste -->
Ich meine - wie kannst Du erwarten, dass Benutzer Deiner Vorlage hier wissen wo sie den HTML-Code zur Anzeige im Kopierblock nun überhaupt einsetzen müssen - wenn Du schon selbst dort maskierten Code einbauen musst, dann kann doch etwas nicht stimmen. Der hat in einem <pre> Tag nichts zu suchen:

Code: Alles auswählen

<pre class="code-area language-html" mbr-text>&lt;div class="demo"&gt;Hallo Welt!&lt;/div&gt;</pre>


Hier mein richtig eingerückter und modifizierter HTML-Code:

Code: Alles auswählen

<section data-bs-version="5.1" class="mbr-section article codeview content5" group="Content">

    <mbr-parameters>
        <header>Size</header>
        <input type="checkbox" title="Full Width" name="fullWidth">
        <input type="range" inline="" title="Top" name="paddingTop" min="0" max="10" step="1" value="5">
        <input type="range" inline="" title="Bottom" name="paddingBottom" min="0" max="10" step="1" value="5">
        <input type="range" name="textWidth" title="Width" min="4" max="12" value="10" step="1">
        <header>Show/Hide</header>
        <input type="checkbox" title="Title" name="showTitle">
        <input type="checkbox" title="Subtitle" name="showSubtitle" checked="">
        <header>Background</header>
        <input type="color" title="Color" name="bgColor" value="#4479d9">
        <header>Breite Code Bereich</header>
        <input type="range" inline="" title="Textbreite (%)" name="innerWidth" min="50" max="100" step="5" value="100">        
    </mbr-parameters>
    
    <div mbr-class="{'container': !fullWidth, 'container-fluid': fullWidth}">
        <div class="row justify-content-center">
            <div class="col-md-12 col-lg-{{textWidth}}">
                <h3 class="mbr-section-title mbr-fonts-style mb-4" mbr-if="showTitle" data-app-selector=".mbr-section-title" mbr-theme-style="display-2">
                    <b>Code kopieren</b>
                </h3>
                <h4 class="mbr-section-subtitle mbr-fonts-style mb-4" mbr-if="showSubtitle" data-app-selector=".mbr-section-subtitle" mbr-theme-style="display-5">
                    Code kopieren
                </h4>
                
                <!-- Syntax Highlighting -->
                <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/atom-one-dark.min.css">
                <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js"></script>
                <script>
                    document.addEventListener("DOMContentLoaded", () => {
                        document.querySelectorAll("pre.code-area").forEach(el => hljs.highlightElement(el));
                    });
                </script>
                
                <!-- Start Copy Script -->                
                <div class="container" mbr-style="{'padding-top': paddingTop + 'rem','padding-bottom': paddingBottom + 'rem'}">
                    <div class="inner-container" mbr-style="{'width': innerWidth + '%'}">
                        
                        <!-- HTML-Code -->
                        <div class="code-box position-relative mb-4">
                            
                            <h5 class="text-light mb-2">HTML-Code</h5>
                            <button class="copy-btn btn btn-sm btn-primary position-absolute top-0 end-0 m-2" data-target="html">
                                Kopieren (HTML)
                            </button>
                            
                            <pre class="code-area language-html" mbr-text="">
                            
                                <!-- Start paste -->
                                Hallo Welt!
                                <!-- End   paste -->
                                
                            </pre>
                            
                        </div>
                        
                        <!-- CSS-Code -->
                        <div class="code-box position-relative mb-4">
                            
                            <h5 class="text-light mb-2">CSS-Code</h5>
                            <button class="copy-btn btn btn-sm btn-success position-absolute top-0 end-0 m-2" data-target="css">
                                Kopieren (CSS)
                            </button>
                            
                            <pre class="code-area language-css" mbr-text="">
                            
                                <!-- Start paste -->
                                .demo { 
                                background: orange;
                                padding: 20px;
                                border-radius: 6px;
                                color: white;
                                }
                                <!-- End   paste -->
                                
                            </pre>
                            
                        </div>
                        
                        <!-- JS-Code -->
                        <div class="code-box position-relative">
                            
                            <h5 class="text-light mb-2">JavaScript-Code</h5>
                            <button class="copy-btn btn btn-sm btn-warning position-absolute top-0 end-0 m-2" data-target="js">
                                Kopieren (JS)
                            </button>
                            
                            <pre class="code-area language-javascript" mbr-text="">
                            
                                <!-- Start paste -->                            
                                JS läuft!
                                <!-- End   paste -->                                
                                
                            </pre>
                            
                        </div>
                        
                    </div>
                </div>
                <!-- End Copy Script -->
                
            </div>
        </div>
    </div>
</section>


Hier die CSS inklusive der originalen CSS von Mobirise:

Code: Alles auswählen

padding-top: (@paddingTop * 1rem);
padding-bottom: (@paddingBottom * 1rem);
background-color: @bgColor;
section.codeview .copy-btn:active {
  transform: translateY(1px);
}
section.codeview h5 {
  color: #ccc;
  font-weight: 600;
}
section.codeview .hljs {
  background: #1e1e1e !important;
  color: #eaeaea;
  border-radius: 8px;
  font-family: Consolas,monospace;
  font-size: .9rem;
  line-height: 1.4;
}
section.codeview .hljs-tag, section.codeview .hljs-name {
  color: #569CD6;
}
section.codeview .hljs-attr, section.codeview .hljs-keyword {
  color: #9CDCFE;
}
section.codeview .hljs-string {
  color: #CE9178;
}
section.codeview .hljs-number, section.codeview .hljs-literal {
  color: #B5CEA8;
}
section.codeview .hljs-comment {
  color: #6A9955;
}
section.codeview .code-area::-webkit-scrollbar {
  width: 10px;
  height: 10px;
}
section.codeview .code-area::-webkit-scrollbar-thumb {
  background: #3a3a3a;
  border-radius: 8px;
}
section.codeview .code-area::-webkit-scrollbar-track {
  background: #1e1e1e;
}
@media (max-width: 768px) {
  section.codeview .code-area {
    max-height: 60vh;
    padding: 15px;
  }
}
.mbr-section-subtitle {
  color: #ffffff;
}



Wenn ich also dann den HTML-Code (oben) bei mir in den Kopierblock einbaue, sieht das so aus:

Code eingefügt.jpg
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 7861
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Block um Code zum Kopieren einzufügen

Ungelesener Beitrag von Tommy Herrmann »

Ich glaube ich weiß wo der Fehler liegt :angst:

Ich hatte den Code hier im Forum aus der Code-Box kopiert und jetzt von Deiner Seite. Ich versuche es nochmals.


P.S.:

Nee - sorry ich schaffe es nicht - vielleicht jemand anderes :crying:

Solange ich da keinen echten HTML-Code einfüge geht es ja - also Dein Beispiel so lasse mit "Hallo Welt" als HTML Beispielcode - was natürlich keiner ist. Aber schon das <section> Tag innerhalb vom <pre> schluckt Mobirise bei mir nicht und HTML-Tags werden teilweise gnadenlos in diesen Bereichen beim Publizieren von Mobirise gelöscht.

Ich hatte übrigens mit meinem Kopiercode genau das gleiche Problem mit einer <textarea> wie jetzt mit dem <pre>. Beides sollte Text unverändert darstellen - wird aber von Mobirise falsch interpretiert. Da eine <textarea> nicht formatierbar ist hat ChatGPT für die "highlight.js" bei mir zusätzlich noch ein <pre> hinzugefügt und via JavaScript beides zusammengeführt, wie man im Quellcode meines Beispiels sehen kann:

https://www.mobirise-tutorials.com/Temp ... #Code-Copy

Bei mir wurde dann alles mit einem sehr aufwendigen JavaScript von ChatGPT zusammengebastelt.

Insgesamt erscheint mir das aber auch bei mir sehr zusammen gefummelt und als ein bedauernswertes Workaround, dass gegen Bugs von Mobirise wie gegen Windmühlen kämpft :angst:

Ich gebe das jetzt auf. Egal wo der Fehler liegt.
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 7861
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Block um Code zum Kopieren einzufügen

Ungelesener Beitrag von Tommy Herrmann »

Unter der Dusche kam mir gerade die Idee:

Wo fügst denn dann neuen anzuzeigenden Code überhaupt ein? Ich habe das bisher im Code Editor getan :eek:
Volker
Moderator
Moderator
Beiträge: 1542
Registriert: Sa 12. Dez 2020, 22:35

Re: Block um Code zum Kopieren einzufügen

Ungelesener Beitrag von Volker »

Gruß Volker
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 7861
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Block um Code zum Kopieren einzufügen

Ungelesener Beitrag von Tommy Herrmann »

Ich glaube es nicht - SORRY

Ja Du fügst den direkt auf der Arbeitsseite ein - hast Du das denn überhaupt irgendwo geschrieben ??? :kopfab:

Da geht es anscheinend.

Klar - weil Mobirise dann die HTML-Tags selbst maskiert.
Volker
Moderator
Moderator
Beiträge: 1542
Registriert: Sa 12. Dez 2020, 22:35

Re: Block um Code zum Kopieren einzufügen

Ungelesener Beitrag von Volker »

Das siehst du doch in meinem Video !!! DAs da neben im Block steht :confused:
Gruß Volker
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 7861
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Block um Code zum Kopieren einzufügen

Ungelesener Beitrag von Tommy Herrmann »

Ich gucke keine Videos :D

… und ich versuche seit Tagen den Code in den Code-Editor einzubauen - so ist das nämlich bei mir gemacht. Der Code ist auf der Arbeitsseite (aus gutem Grund) gesperrt, sodass man den dort nicht versehentlich zerstört.

Geht alles:

https://www.mobirise-tutorials.com/Temp ... #Code-Copy
Volker
Moderator
Moderator
Beiträge: 1542
Registriert: Sa 12. Dez 2020, 22:35

Re: Block um Code zum Kopieren einzufügen

Ungelesener Beitrag von Volker »

Tommy Herrmann hat geschrieben: Di 14. Okt 2025, 07:41 Ich gucke keine Videos :D

Ja nee - iss klar :D
Gruß Volker
Benutzeravatar
Tommy Herrmann
Site Admin
Site Admin
Beiträge: 7861
Registriert: So 6. Dez 2020, 07:37
Wohnort: Berlin
Kontaktdaten:

Re: Block um Code zum Kopieren einzufügen

Ungelesener Beitrag von Tommy Herrmann »

Hallo Volker,

nochmals vielen Dank für das tolle Skript zum Kopieren von HTML, CSS oder auch JavaScript Codes :tu:

Ich kann das extrem gut gebrauchen, derweil ich ja fast immer irgendwelche Codes in meinen Tutorials zum Kopieren anbiete.

Bisher habe ich diese immer - mehr oder weniger - händisch maskiert und dann in einem <code> Tag präsentiert. Das ist nun natürlich um ein Vielfaches einfacher, zumindest spare ich mir die irrsinnige Arbeit die Codes alle mit geschützten Leerzeichen einzurücken :angst:

Hier nochmals mein überarbeitetes Skript von Dir inklusive übersichtlicher Einrückungen, das Du natürlich gerne auch übernehmen darfst, falls Du möchtest.

Ich habe noch den Code für den <head> Bereich hinzugefügt, da man ihn sehr häufig benötigt. Bereiche, die man momentan nicht braucht, kann man einfach entfernen.

https://www.mobirise-tutorials.com/Temp ... #Code-Copy

Auf meiner Template-Seite sind alle vier Codes dargestellt, die man für diese Anwendung benötigt. Ich habe diese getrennt, da alles andere sehr "unsauber" ist und auch Fehler verursachen kann. Gerade bei JavaScript ist es unendlich wichtig, wo dieser Code auf der Seite steht.

Die Buttons zum Kopieren habe ich verlagert, das diese sonst am Handy alles überdecken.
Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste