首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >CodeMirror的正常使用

CodeMirror的正常使用

原创
作者头像
不会飞的小鸟
修改于 2020-07-08 02:14:08
修改于 2020-07-08 02:14:08
3.1K00
代码可运行
举报
文章被收录于专栏:只为你下只为你下
运行总次数:0
代码可运行

CodeMirror的正常使用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//首先通过<script>标签引入相应的js,这个就不必说了
var myCodeMirror = CodeMirror.fromTextArea(myTextArea,{
      key: "value"
});//就这么简单

问题一、CodeMirror在Bootstrap模态框下的使用不显示代码

这个非常简单

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var myCodeMirror_Modal = CodeMirror.fromTextArea(document.getElementById("codetextarea"), {
    theme: "default",可以设置其他主题,但必须引入相应的css
    lineNumbers: true,
    mode: "text/javascript",可以设置其他语言,但必须引入相应的js
    smartIndent: true
});//构造CodeMirror实例
关键代码来了
$("#codeEditModal").on('shown.bs.modal.bs.modal', function () {//模态框显示后触发该事件
    myCodeMirror_Modal.refresh();//刷新编辑器,这样问题就解决了
});

问题二、如何使用clipboard复制CodeMirror里面的代码

clipboard的正常使用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!--html-->
<input type="text" id="myInput" value="输入内容" />
<button class="my-compy" data-clipboard-target="#myInput">复制文本框的内容</button>  <!--注意一下这个data-clipboard-target属性-->

<textarea id="myContent">123456789</textarea>
<button class="my-compy" data-clipboard-target="#myContent">复制多行文本框的内容</button>
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
首先通过<script>标签引入相应的js,这个就不必说了
//JavaScript
var clipboard = new ClipboardJS('.my-compy');//通过class名构造实例

clipboard.on('success'www.rhyl158.com , function(e) {
    alert("复制成功");
});

clipboard.on('error', function(www.ued3zc.cn) {
    console.log(e);
    alert("失败!");
});

问题:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<textarea id="myCode">$.ajax({www.xinghaiyule1.com})</textarea>
<button class="code-copy" data-clipboard-target="#myCode">复制多行文本框的内容</button>
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var myCodeMirror = CodeMirror.fromTextArea(document.getElementById("myCode"), {
    theme: "default",
    lineNumbers: true,
    mode: "text/javascript",
    smartIndent: true
});//构造CodeMirror实例

var clipboard = new ClipboardJS('.code-copy');//通过class名构造实例

clipboard.on('success', function(www.gywhg.net) {
    alert("复制成功");
});

clipboard.on('error', function(e) {
    console.log(www.iceason.net);
    alert("失败!");
});

结果你会发现,可以复制代码,没问题,但是不可以粘贴复制的代码,那问题到底出现在了哪里呢? 首先呢,排除clipboard插件的问题,这个很简单,随便找个例子测试一下就行了,发现的确没问题,可以复制,可以粘贴。 那问题肯定是出现在CodeMirror上了。 折腾了很久,发现CodeMirror这个插件的原理: 它是首先获取textarea这个标签里面的内容,然后设置display:none;接着通过正则表达式,来解析textarea的内容,并在上面加上相应的样式,最后在textarea标签的后面插入新的内容。原理的确挺简单的,但要真正做到,的确是不容易的!!!

问题就出现在这个display:none上,然后我测试了一下,给一个文本框设置display:none,clipboard可以复制,但无法粘贴内容了。 总算找到了问题,那如何解决呢? 既然无法复制display:none的文本框的内容,那我可以通过CodeMirror的实例来获取代码内容不就行了吗? 答案:嗯,这样的确便可以了,问题解决!!! 代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<textarea id="myCode">$.ajax({www.jintianxuesha.com})</textarea>
<button class="code-copy">复制多行文本框的内容</button><!--在这里不要设置data-clipboard-target-->
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var myCodeMirror www.yixingylzc.cn= CodeMirror.fromTextArea(document.getElementById("myCode"), {
    theme: "default",
    lineNumbers: true,
    mode: "text/javascript",
    smartIndent: true
});//构造CodeMirror实例

var clipboard = new ClipboardJS('.code-copy', {
    text: function (www.yacuangyl.com ) {
        var value = myCodeMirror.getValue(www.xingyunylpt.com);//重写clipboard粘贴的文本
        return value;
    }
});

clipboard.on('success', function(e) {
    alert("复制成功"www.tengyao3zc.cn);
});

clipboard.on('error', function(e) {
    console.log(e);
    alert("失败!");
});

这样,便解决了问题,但一想:这样不行啊,如果我要构造多个CodeMirror,那复制的话,需要复制哪个文本框里面的代码呢?

问题三、如何一次性构造多个CodeMirror

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//遍历class为code_mirror_textarea的textarea
$(".code_mirror_textarea").each(function () {
    let textareaId = $(this).attr("id");//获取textarea的id
    let codeLanguage = $(this).data("codelanguage");//获取textarea的language mode,这个需要提前给每个textarea通过data-codelanguage赋值的
    //console.log(textareaId, codeLanguage);
    myCodeEditor(textareaId, codeLanguage);//分别构造CodeMirror的实例
});


function myCodeEditor(textareaId, codeLanguage) {
    var editor = CodeMirror.www.tianshun178.cn fromTextArea(document.getElementById(textareaId), {
        theme: "default",
        lineNumbers: true,
        mode: codeLanguage,
        smartIndent: true
    });
} 

问题四、批量构造多个CodeMirror,那如何获取CodeMirror的实例呢?

官网文档并没有提供获取CodeMirror实例的API。 但还是有办法滴,小爷我就是这么6!!!

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function myCodeEditor(textareaId,www.keLezaix.com codeLanguage) {
    var editor = CodeMirror.fromTextArea(document.getElementById(textareaId), {
        theme: "default",
        lineNumbers: true,
        mode: codeLanguage,
        smartIndent: true
    });
    $("#" + textareaId + "www.qiyiyuLe528.cn ").data("CodeMirrorInstance", editor);www.lanxingylpt.cn//将CodeMirror实例存储在textarea对应的CodeMirrorInstance里面就可以了
} 

//然后怎么获取CodeMirror实例呢?
var myCodeMirror = $(" www.jujinyule.com#" + textareaId + "").data("CodeMirrorInstance");//接下来便可以通过myCodeMirror来调用相应的API了
var value = myCodeMirror.getValue();//获取CodeMirror值

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
基于CodeMirror 10分钟打造一个记事本应用(真的能使用,非demo)[通俗易懂]
代码分为html、css、js三部分,和平时写前端代码基本一样。 不过有几点需要说明下:
全栈程序员站长
2022/09/27
1.1K0
基于CodeMirror 10分钟打造一个记事本应用(真的能使用,非demo)[通俗易懂]
CodeMirror 实现 JavaScript、 MySql 关键字的变色和自动实时提示 autocomplete
https://codemirror.net/doc/manual.html#config
一个会写诗的程序员
2018/09/12
3K0
编辑器中SQL关键字提示
官方 https://github.com/surmon-china/vue-codemirror/tree/v4.0.1
码客说
2023/09/22
4970
编辑器中SQL关键字提示
Clipboard.js实现复制文本到剪贴板功能[通俗易懂]
Clipboard.js是一个轻量级的实现复制文本到剪贴板功能的JavaScript插件,该插件可以将输入框,文本域,DOM节点元素中的文本内容复制到剪贴板中。
全栈程序员站长
2022/09/15
2.7K0
clipboard.js-master点击复制到系统剪切板适合移动及PC端
Copying text to the clipboard shouldn't be hard. It shouldn't require dozens of steps to configure or hundreds of KBs to load. But most of all, it shouldn't depend on Flash or any bloated framework.
JaneYork
2023/10/11
3770
Clipboard.js实现复制[通俗易懂]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/154538.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/06
2K0
复制粘贴插件——clipboard.js的使用
将文本复制到剪贴板应该不难。它不应该需要几十个步骤来配置或加载数百 KB。但最重要的是,它不应该依赖于 Flash 或任何臃肿的框架。 这就是 clipboard.js 存在的原因。
SingYi
2022/07/13
3.5K0
使用 CodeMirror 打造属于自己的在线代码编辑器
写这个的目的是因为之前项目里用到过 CodeMirror,觉得作为一款在线代码编辑器还是不错,也看到过有些网站用到过在线代码编辑,当然我不知道他们是用什么做的,这里我把公司项目里用到的那部分抽出来,单独写篇博客,并把抽出来的那部分代码提交到 GitHub 去(地址),以防日后可能会再次用到(没准毕业设计里可能用的到)。
JAVA高级架构开发
2018/09/26
3.7K0
使用 CodeMirror 打造属于自己的在线代码编辑器
在线可视化编辑源码
在线可视化编辑支持外链,支持html,php等,扒来的。 在线修改代码,源码只有一个html,其它外链都是Bootstrap的。 预览 教程开始 新建一个文件,可html,ph
Youngxj
2018/06/06
3.9K0
html5页面实现点击复制功能
在实际工作中,有时候会遇到这样的需求,页面上有一个链接,不需要选中链接内容,只需要点击复制按钮,就可以把链接内容复制到剪切板。这时候可以使用clipboard插件来实现。以下是一个简单的demo。 首先可以通过npm install clipboard --save-dev 来安装该插件 <!DOCTYPE html> <head> <meta charset="UTF-8"> <title>clipboard示例</title> <script src="lib/clipboard
用户1174387
2018/01/17
4.5K0
html5页面实现点击复制功能
一个被 157317 个项目引用的 JS 开源库
Clipboard.js 实现了原生 JavaScript (无 Flash)的浏览器内容复制到系统剪贴板的功能。
程序员老鱼
2022/12/02
8580
CodeMirror 代码渲染神器的极简入门实例
效果: image.png HTML: <script src="https://codemirror.net/lib/codemirror.js"></script> <script src="ht
一个会写诗的程序员
2018/09/12
4.5K0
百度编辑器 UEditor 用 highlight.js 库实现代码高亮
首先到官网去下载这个插件:https://highlightjs.org/download/
Savalone
2020/02/11
2.2K0
百度编辑器 UEditor 用 highlight.js 库实现代码高亮
js复制插件clipboard全平台兼容
github项目地址:https://github.com/zenorocha/clipboard.js/
墨渊
2018/05/09
4.2K4
用clipboard.js实现纯JS复制文本到剪切板
ZeroClipboard是利用flash来实现的,ZeroClipboard兼容性很好,但是由于现在越来越多的浏览器不支持flash,导致一些没法正常使用了。
黄啊码
2020/05/29
3.9K0
用clipboard.js实现纯JS复制文本到剪切板
JavaScript 中的复制粘贴操作
在日常业务开发,比如复制后增加版权信息,点击复制,等场景中需要进行复制粘贴的操作,以下是几种实现方案。
FEWY
2021/09/08
2.6K0
js复制插件clipboard全平台兼容
前面转载过一个篇简单《通过js实现复制到剪贴板功能》,但是兼容性不是很理想,有幸今天找到一个全平台通用的js,适用于Chrome 42+、Firefox 41+ 、Edge 12+、IE 9+、Opera 29+、Opera 29+等平台 手机上也测试过可以使用的 使用教程: 先引用js <script src="clipboard.min.js"></script> 下面是html <a id="copyValue" data-clipboard-target='#copyV
Youngxj
2018/06/06
3.4K0
Html中textarea高亮编辑显示代码插件
Html中textarea高亮编辑显示代码插件 一、web代码编辑高亮插件 一般在textarea中我们希望使用高亮编辑代码,那么如何可以做到高亮显示? 很多editor web编辑器都有类似的功能,但需要我们手动去修改插件的代码,因此我觉得很不好使!而codemirror这个完全是javascript插件,可以帮助我们实现代码高亮显示,并且在编辑时就可以看到高亮效果。 二、如何使用 压缩包中有很多demo,你可以进入里面查看例子是如何使用的,下面我介绍一下我是如何使用的。
蛋未明
2018/06/07
7.3K0
我熬夜开发了一款简约实用、支持多平台的Markdown在线编辑器(开源)
之前,一直想开发一款属于自己的Markdown编辑器,主要是自己平常写文章可以更加灵活操作,另外扩宽自己的视野也是非常不错的选择啊!所以在周末就决定玩耍一番。首先我调研了很多线上热门的md编辑器,都很优秀。不为超过他们,主要自己用着舒服点。这篇文章主要是记录下我是如何从0到1是完成一款还算拿得出手的Markdown编辑器。
Vam的金豆之路
2021/12/01
1.1K0
我熬夜开发了一款简约实用、支持多平台的Markdown在线编辑器(开源)
用豆包制作一个可以统计直播数据的系统
最近公司直播使用的是微赞平台做私域直播,我们为了方便直播数据的累计,保证能够提升单个直播间的数据,所以采用的是数据全累计,这样会导致一个问题就是无法获取单场数据,经平台确认,暂时无法统计这方面的数据,但是我们每天都要汇报这方面的数据,所以我做了这个系统。
半夜喝可乐
2024/12/11
2470
用豆包制作一个可以统计直播数据的系统
推荐阅读
相关推荐
基于CodeMirror 10分钟打造一个记事本应用(真的能使用,非demo)[通俗易懂]
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档