2017-04-19 2 views
0

Ich arbeite an etwas Code, wo ich Ereignis beim Fliegen auslösen und das Highlight-Styling anwenden muss. Aus irgendeinem Grund wird das Styling nicht angewendet.Wie wird das Styling beim Fliegen angewendet, wenn das Highlight.js-Plugin verwendet wird?

https://jsfiddle.net/qm9rgh0u/

hljs.initHighlightingOnLoad(); 
 

 
var content_div = document.getElementById("edit"); 
 

 
content_div.addEventListener("keypress", function() { 
 
    hljs.initHighlightingOnLoad(); 
 

 
})
@import url('https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.11.0/styles/default.min.css');
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.11.0/highlight.min.js"></script> 
 

 
<div id="edit" contenteditable="true"> 
 
    <pre> 
 
<code> 
 
    var i = 0, 
 
     colors = ["red","blue","green"]; 
 
    var content = document.getElementById("text"); 
 
    function appendFunction(e,id){ 
 

 
     var new_span = document.createElement("span"); 
 
     new_span.style.color = colors[i]; 
 
     new_span.textContent = id.textContent; 
 
     id.append(new_span); 
 
     // var new_span = "<span style=color:'+colors[i]+'>"+id.textContent+"</span>"; 
 
     // var 
 
     // id.append(new_span); 
 
    } 
 

 

 

 
     var id = document.getElementById("text"); 
 
     id.addEventListener("keyup", function(event){ 
 
     appendFunction(event,id); 
 
     }) 
 

 

 

 
</code> 
 
</pre> 
 
</div>

+0

Haben Sie die Dokumentation gelesen? https://highlightjs.org/usage/ –

+0

@FelixKling Sie haben nichts über Fliegen gemacht. –

+0

Nein? Was ist mit dem Teil 'Benutzerdefinierte Initialisierung'? Oder über https://highlightjs.readthedocs.io/en/latest/api.html. –

Antwort

0

ich id="codeblock" zu Ihrem HTML <code> Tag

auch mit aktualisiertem js hinzugefügt, geändert ich keypress zu verwischen, so können Sie den Code aktualisieren und wenn Sie verlieren Fokus erhalten Sie den aktualisierten Stil:

hljs.initHighlightingOnLoad(); 

var content_div = document.getElementById("edit"); 
content_div.addEventListener("blur", function() { 
    hljs.highlightBlock(document.getElementById("codeblock")); 
}) 

https://jsfiddle.net/dalinhuang/r2a56w9b/

+0

Ich änderte das Ereignis, um "keyup" zu sein und die Hervorhebungsfunktion auf dem Schlüsselcode 32 auszulösen. Wenn ich dies tue, startet der Cursor vom 0. Index der Linie. Weißt du, was das Problem wäre? –

+0

@SharathV Jedes Mal, wenn Sie den Stil aktualisieren Sie den Fokus verlieren, daher haben Sie am Anfang der Zeile gestartet, nicht sicher über den Fix, deshalb schlage ich vor, Sie verwenden Unschärfe –

+0

@SharathV: Ändern des Inhalts des Elements (was ist Wenn Sie die Hervorhebung anwenden, wirkt sich dies auf die Cursorposition aus. Deshalb habe ich vorgeschlagen, bestehende Lösungen zu verwenden, es sei denn, Sie möchten das Cursor-Problem natürlich selbst lösen. –

Verwandte Themen