在使用codemirror时,
其原理是根据form中的textarea标签,自动加载其内容,获得代码行的显示。(具体使用方式参见 codemirror官网使用手册 http://codemirror.net/doc/manual.html)
优点显而易见,
在codemirror中,修改了一部分代码,在form表单提交时,codemirror会自动调用其内部的save()方法,将codemirror中的新值,更新至textarea中,进行表单提交。
然而当我们用js动态加载文件,修改后对文件进行保存时出现了出乎意料的情况。
<script> var editor = null; function loadfile(){ var fileName = $('#file-selector').val(); $.get("/load-file?file-name=" + fileName, function(data) { $('#lispcode').empty(); $('#lispcode').text(data); $('.CodeMirror').remove(); editor = CodeMirror.fromTextArea(document.getElementById(\"lispcode\"), {lineNumbers: true}); }); } </script> <form> <select id="file-selector" onchange="loadfile()"> <option>1</option> <option>2</option> </select> <textarea id="lispcode">xxx</textarea> </form> <script>editor = CodeMirror.fromTextArea(document.getElementById("lispcode"), {lineNumbers: true}); </script> //写在textarea之后,加载textarea内容
上述动态load文件的代码可以正常显示,但是load过后,修改代码仍然提交的是原来第一次load出来文件的代码。
问题原因: 修改的代码没有正常更新到textarea,以至于form提交时,仍然更新的是原来的旧值。
分析:1. 上述代码在动态load文件内容时,会生成一个新的codemirror实例,但是在form提交时,仍然使用的是初始对象的value值。
思路:1. 由于codemirror在初始化时,会创建一个实例,所以重新加载时考虑销毁旧实例,创建新实例。
解决方案:
editor.toTextArea(); $('#lispcode').empty(); $('#lispcode').text(data); $('.CodeMirror').remove(); editor = CodeMirror.fromTextArea(document.getElementById(\"lispcode\"), {lineNumbers: true});
效果:动态load文件,codemirror不更新。。。
分析:2. 可否动态刷新codemirror中的值
思路:2. 设置codemirror的值
解决方案:
$.get("/load-file?file-name=" + fileName, function(data) { $('#lispcode').empty(); $('#lispcode').text(data); editor.getDoc().setValue(data); editor.refresh(); });
效果:动态load文件,codemirror更新,表单提交时,textarea数据为新值。(问题解决)
相关推荐
**CodeMirror** 是一个强大的、开源的代码编辑器组件,主要应用于网页和Web应用程序中,为用户提供语法高亮、代码自动完成、错误检测等高级功能。这个插件因其易用性和丰富的特性,被广泛赞誉为网络上最好用的代码...
无论你是开发在线编程学习平台,还是创建代码分享社区,甚至是为个人项目添加代码预览功能,Codemirror 都能成为你的得力助手。通过持续更新和社区支持, Codemirror 保持了其在在线代码编辑领域的领先地位。
4. **文档**(可能在`docs`或`README`文件中):详细的API文档和指南,有助于深入理解和使用CodeMirror。 5. **其他文件**:可能包含额外的配置文件、测试用例或者插件。 在你的项目中集成CodeMirror,通常需要以下...
CodeMirror在线代码编辑器 版本:5.60.0 ...最基本功能,需引入codemirror.js和codemirror.css文件 通过调用CodeMirror.fromTextArea()方法或者 CodeMirror()方法初始化配置。(更多配置见官网)
2. **API 更新**:可能引入了新的 API 和事件,以更好地控制编辑器的行为,比如添加了新的方法来动态改变模式,或者提供了更精细的用户交互回调。 3. **兼容性提升**:CodeMirror 通常会关注浏览器的兼容性,5.59.1 ...
CodeMirror是一款著名的开源在线代码编辑器,它支持多种编程语言的语法高亮和代码格式化功能。在网页应用中,CodeMirror常被用于提供一个交互式的代码编辑界面,让用户能够直接在浏览器中编写、编辑和格式化代码。这...
在vue项目中使用codemirror插件实现代码编辑器功能(代码高亮显示及自动提示),具体内容如下所示: 1、使用npm安装依赖 npm install --save codemirror; 2、在页面中放入如下代码 <textarea ref=mycode class...
通常,CodeMirror的主文件名为`codemirror.js`,而语言和主题的配置文件则根据需求单独引入。例如,要支持JavaScript和Python,你需要引入对应的模式文件`mode/javascript/javascript.js`和`mode/python/python.js`...
这个"codemirror-5.2"压缩包包含了CodeMirror 5.2版本的所有文件,该版本发布于某个时间点,提供了一些新特性、改进和可能的修复。官方包的下载确保了其可靠性和兼容性,避免了第三方源可能存在的风险。 CodeMirror...
学习使用CodeMirror,首先需要理解其核心API,包括初始化编辑器、获取和设置编辑器内容、添加和移除模式、以及处理用户交互等。此外,CodeMirror还支持插件系统,可以扩展其功能,如行号显示、搜索替换、折叠代码等...
`codemirror.zip`是一个压缩包,包含了使用和开发`Codemirror`富文本编辑器所需的全部资源。 Codemirror是一款流行的开源JavaScript代码编辑器,它支持多种编程语言的语法高亮,拥有丰富的可定制性,广泛应用于网页...
文本比对js-配合 CodeMirror.MergeView方法使用
结合 Laravel 的 Blade 模板系统,你可以动态地在页面上生成多个 Codemirror 实例,或者根据后端返回的数据动态配置编辑器。例如,你可能需要根据用户的选择动态切换编辑器的语言模式。 8. **优化与性能** 为了...
4. **添加插件和功能**:根据需求,你可以加载额外的模式文件(如`mode/java/java.js`)来支持特定语言,或者引入其他插件以增加功能。 ### 4. 示例代码 ```html <!DOCTYPE html> ...
这个"code mirror - complete"压缩包很可能包含了CodeMirror的所有核心组件和资源,包括CSS样式文件、模式(mode)文件、库(lib)文件、主题(theme)文件以及演示(demo)文件。 1. **CSS**: CSS文件是样式表语言...
CodeMirror是一款广泛应用于网页开发中的开源代码编辑器,它的主要功能是为网页中的代码片段提供语法高亮显示,提升代码的可读性和编辑体验。在编程教育、在线编程平台、博客文章以及各种Web应用程序中都能看到Code...
CodeMirror是一款著名的开源代码编辑器,它以JavaScript编写,可以在网页上实现代码的实时编辑和高亮显示。这个"CodeMirror-master"压缩包文件很可能是CodeMirror项目的源码仓库,通常包含项目的核心代码、示例、...
项目概述:本项目是一款基于Python的在线交互教学平台,采用...简而言之,此平台通过现代化的Web技术栈,将Flask的简易性与CodeMirror的强大代码编辑功能相结合,打造出一个高效、直观的Python在线学习和教学环境。
codemirror-graphql, GraphQL模式和CodeMirror的帮助器 用于CodeMirror的 GraphQL模式 为CodeMirror提供一个解析器模式,以及一个live和一个由你的GraphQL架构支持的typeahead hinter 。 正在启动npm install --sa