JavaScript建立一个语法高亮输入框实现思路


Posted in Javascript onFebruary 26, 2013

textarea元素已被广泛用于网页Web的IDE。通常网站自带的textarea编辑器不能满足我们的需求,作为一名开发者我们经常需要进行代码的在线编辑,高亮显示代码等,因此,通过其他的开源项目,我们可以添加一些实用的功能, 在这篇文章中,我将使用JavaScript库ACE来创建一个输入框效果。这是一个完全开源的脚本。该脚本允许开发人员创建支持语法高亮的输入框。然后你可以代码嵌入到网站中的任何地方
下载库 首先我们需要Github上下载ACE代码。 下载完成后解压缩,在你的header部分引入js文件

<script src="src-min/ace.js" type="text/javascript" charset="utf-8"></script>

添加代码到编辑器
首先设置一个id为editor的div 然后在script里面调用ace.edit()方法,代码如下
var editor = ace.edit("editor"); 
editor.getSession().setMode("ace/mode/javascript");您可以重命名变量,为了方便起见,我定义了var editor作为变量,你也可以定义var demoeditor作为变量。第二行声明使用哪种类型的语言高亮显示。您可以从 src 目录选择其他语言集合。这里是一些支持支持的语言集合:

SQL
Ruby
SASS
PHP
Objectivec
Csharp
Java
JSON
使用额外的参数
editor.setTheme("ace/theme/dawn"); 
editor.getSession().setTabSize(2); 
editor.getSession().setUseWrapMode(true);

这3行代码是关于文本输入效果的,第一行改变代码默认的语法颜色和主题,在src目录下个有几十个新的主题,你可以从中任意选择
另外两个选项是关于用户体验。通常情况下,按一个键盘上的Tab键将输入4个空格,这里我设置成2个空格,此外,该文本在默认情况下将不会自动换行,超了会追加一个水平滚动条向外延伸。但使用这种方法setUseWrapMode(true),我们可以修复自动换行的问题。
还有一些其他的命令,你可以参考ACE向导。这里面包含了改变光标的位置,动态添加新内容,或复制的文本的全部内容。
CSS代码
#editor { 
margin-left: 15px; 
margin-top: 15px; 
width: 1000px; 
height: 400px; 
}

JavaScript建立一个语法高亮输入框实现思路
Javascript 相关文章推荐
ExtJs之带图片的下拉列表框插件
Mar 04 Javascript
jQuery获取样式中的背景颜色属性值/颜色值
Dec 17 Javascript
JS数组的遍历方式for循环与for...in
Jul 31 Javascript
JS中实现简单Formatter函数示例代码
Aug 19 Javascript
AngularJS 视图详解及示例代码
Aug 17 Javascript
JS多物体实现缓冲运动效果示例
Dec 20 Javascript
JS+HTML5 FileReader对象用法示例
Apr 07 Javascript
React-router v4 路由配置方法小结
Aug 08 Javascript
JS实现合并json对象的方法
Oct 10 Javascript
fetch 使用及如何接收JS传值
Nov 11 Javascript
使用jQuery 操作table 完成单元格合并的实例
Dec 27 jQuery
vue 之 .sync 修饰符示例详解
Apr 21 Javascript
js批量设置样式的三种方法不推荐使用with
Feb 25 #Javascript
js 获取计算后的样式写法及注意事项
Feb 25 #Javascript
js调用webservice中的方法实现思路及代码
Feb 25 #Javascript
JS获取页面input控件中所有text控件并追加样式属性
Feb 25 #Javascript
JS+CSS制作DIV层可(最小化/拖拽/排序)功能实现代码
Feb 25 #Javascript
JavaScript实现网页图片等比例缩放实现代码及调用方式
Feb 25 #Javascript
30分钟就入门的正则表达式基础教程
Feb 25 #Javascript
You might like
一个自定义位数的php多用户计数器代码
2007/03/11 PHP
PHP 采集程序中常用的函数
2009/12/09 PHP
Drupal7中常用的数据库操作实例
2014/03/02 PHP
PHP从零开始打造自己的MVC框架之路由类实现方法分析
2019/06/03 PHP
PHP中类与对象功能、用法实例解读
2020/03/27 PHP
Aliyun Linux 编译安装 php7.3 tengine2.3.2 mysql8.0 redis5的过程详解
2020/10/20 PHP
用js实现的仿sohu博客更换页面风格(简单版)
2007/03/22 Javascript
EXT中xtype的含义分析
2010/01/07 Javascript
关于javascript中的typeof和instanceof介绍
2012/12/04 Javascript
javascript如何创建表格(javascript绘制表格的二种方法)
2013/12/10 Javascript
javascript实现的弹出层背景置灰-模拟(easyui dialog)
2013/12/27 Javascript
使用FlexiGrid实现Extjs表格效果方法分享
2014/12/16 Javascript
使用 TypeScript 重新编写的 JavaScript 坦克大战游戏代码
2015/04/07 Javascript
js基于面向对象实现网页TAB选项卡菜单效果代码
2015/09/09 Javascript
javascript HTML5 canvas实现打砖块游戏
2020/06/18 Javascript
jQuery on()方法绑定动态元素的点击事件实例代码浅析
2016/06/16 Javascript
BOM系列第一篇之定时器setTimeout和setInterval
2016/08/17 Javascript
浅谈Javascript中的Label语句
2016/12/14 Javascript
Angular 5.0 来了! 有这些大变化
2017/11/15 Javascript
node.js调用C++函数的方法示例
2018/09/21 Javascript
ES6 如何改变JS内置行为的代理与反射
2019/02/11 Javascript
微信小程序Flex布局用法深入浅出分析
2019/04/25 Javascript
js键盘事件实现人物的行走
2020/01/17 Javascript
jQuery实现简单日历效果
2020/07/05 jQuery
[05:20]2018DOTA2亚洲邀请赛主赛事第三日战况回顾 LGD率先挺进胜者组决赛
2018/04/06 DOTA
在Python中使用lambda高效操作列表的教程
2015/04/24 Python
Django中传递参数到URLconf的视图函数中的方法
2015/07/18 Python
Python3 queue队列模块详细介绍
2018/01/05 Python
django序列化serializers过程解析
2019/12/14 Python
浅谈对pytroch中torch.autograd.backward的思考
2019/12/27 Python
使用matlab 判断两个矩阵是否相等的实例
2020/05/11 Python
用CSS3实现无限循环的无缝滚动的实例代码
2017/07/04 HTML / CSS
三维科技面试题
2013/07/27 面试题
政府班子四风问题整改措施
2014/10/04 职场文书
高中班主任评语
2014/12/30 职场文书
Linux、ubuntu系统下查看显卡型号、显卡信息详解
2022/04/07 Servers