Codemirror编辑器全屏 - 如何向代码镜像添加自定义函数

时间:2011-10-14 10:03:11

标签: javascript codemirror

有一个很好的example of how to make a fullscreen version of the CodeMirror editor。但是,如果CodeMirror小部件位于其他position: absoluterelative div的中间,则不会起作用(CodeMirror小部件的绝对定位将不再相对于整个页面)。

我们可以向CodeMirror添加一个新命令以全屏显示:

CodeMirror.commands.fullscreen = function (cm)
{
var fs_p = $(cm.getWrapperElement());

if ( cm._ic3Fullscreen == null) {
    cm._ic3Fullscreen = false;
    cm._ic3container = fs_p.parent();
}

if (!cm._ic3Fullscreen)
{
    fs_p = fs_p.detach();
    fs_p.addClass("CodeMirrorFullscreen");
    fs_p.appendTo("body");
    cm.focus();
    cm._ic3Fullscreen = true;
}
else
{
    fs_p = fs_p.detach();
    fs_p.removeClass("CodeMirrorFullscreen");
    fs_p.appendTo(cm._ic3container);
    cm.focus();
    cm._ic3Fullscreen = false;
}
};

在创建CodeMirror之后我们需要绑定这个新命令。将其添加到选项中:

extraKeys: {"F11": "fullscreen"}

问题是要在CodeMirrorFullscreen CSS类中添加什么来确保全屏工作?

1 个答案:

答案 0 :(得分:1)

使用position: fixed代替absolute应该可以解决问题。

要测试它,只需修改CodeMirror的fullscreen.html演示的CSS,如下所示:

  form {
    position: relative;
  }
  .CodeMirror-fullscreen {
    display: block;
    position: fixed;
    top: 0; left: 0;
    width: 100%;
    z-index: 9999;
  }

(添加的form选择器不是解决方案的一部分。它只是确保我们正在测试您关注的案例 - 在position: absolute中使用.CodeMirror-fullscreen的情况工作)。