2011-10-22 172 views
4

我使用代碼鏡像在網頁中顯示,突出顯示和編輯xml,但我遇到了與插入位置偏移的光標位置有問題,因此如果從某處刪除字符閃爍的光標是,您所期望的字符之前的字符會被刪除。我假設它與我的當前頁面發生了css衝突,因爲它在我的頁面外運行良好,但無法在任何地方找到衝突。有沒有人有類似的問題或知道該怎麼辦?Codemirror光標位置偏移

回答

3

進一步的調查顯示,該頁面在所有嵌入到字段集中的div上設置了填充,這是導致問題的原因。

0

有時,還有斜體或粗體行(取決於您的操作系統和瀏覽器)的下方,光標的垂直位置錯誤達90%。它可以很容易地通過設置,例如

.CodeMirror pre { 
    height:15px; 
} 

CSS樣式表中的任何位置。這也爲您提供了一種控制線條高度的方法,如果您發現代碼行顯示彼此過於靠近。

3

以下行解決了該問題對我來說:

.CodeMirror pre { 
    white-space: pre-wrap; 
    word-break: break-all; 
    word-wrap: break-word; 
} 

我在我的CodeMirror配置中使用lineWrapping: true。將其設置爲false也適用。

0

由於某些原因,啓用縮進時的空格在計算行大小時未正確處理。在codemirror.js用下面的更換measureLine功能的伎倆對我來說:

function measureLine(cm, line) { 
    // First look in the cache 
    var cached = findCachedMeasurement(cm, line); 
    if (cached) return cached.measure; 

    // Failing that, recompute and store result in cache 
    var measure = measureLineInner(cm, line); 

    var origL; 
    var origR; 
    var lastR =""; 
    for (var mes in measure) { 
     origL = measure[mes].left; 
     origR = measure[mes].right; 

     if (lastR != "") { 
      measure[mes].left = lastR; 
      measure[mes].right = lastR + (origR - origL); 
     } 

     if (origL == origR) { 
      measure[mes].right = measure[mes].right + 8; 
     } 
     lastR = measure[mes].right; 
    } 

    var cache = cm.display.measureLineCache; 
    var memo = { 
     text: line.text, 
     width: cm.display.scroller.clientWidth, 
     markedSpans: line.markedSpans, 
     measure: measure, 
     classes: line.textClass + "|" + line.bgClass + "|" + line.wrapClass 
    }; 

    if (cache.length == 16) cache[++cm.display.measureLineCachePos % 16] = memo; 
    else cache.push(memo); 
    return measure; 
} 
1

小心與CodeMirror你的CSS使用變焦。

我用放大身體和刪除工作適合我。