我想用JavaScript做一個簡單的語法高亮顯示,但我總是會遇到同樣的問題。該程序的工作原理如下:當用戶輸入(不帶shift鍵)時,程序將用另一個關鍵字var用紅色代替關鍵字var(這仍然非常基本)。問題在於,無論何時按下回車鍵,文本都會突出顯示,但光標會返回到第一行的第一個單詞。你如何看待我可以防止這種情況發生?使用JavaScript語法高亮顯示
<div class="container">
<pre class="text"><code contenteditable="true" id="format">
</code></pre>
</div>
JS
var editor = document.getElementById('format');
var npatt =/*var +/igm
editor.addEventListener('keyup', highlight);
function highlight(e){
var content = editor.innerHTML;
if(e.which === 13 && e.shiftKey===false){
editor.innerHTML = content.replace(npatt, '<span style="color:red">var</span> ');
console.log(editor.innerHTML);
}
}
也許光標的移動,因爲現有的內容由語法高亮顯示的內容被完全取代,所以光標位置是沒有意義的,並恢復爲默認的位置? – Ryan
你可以發佈JSfiddle或代碼片段嗎? –
是的,但我該如何解決這個問題?,我的意思是說,當我點擊輸入時,替換的文本應該在第一行(或任何行)和下一行的光標? – Noctisdark