2011-10-22 175 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使用变焦。

我用放大身体和删除工作适合我。