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 相关文章推荐
mailto的使用技巧分享
Dec 21 Javascript
jquery动态加载js三种方法实例
Aug 03 Javascript
一个简单的JS时间控件示例代码(JS时分秒时间控件)
Nov 22 Javascript
js取模(求余数)隔行变色
May 15 Javascript
点击A元素触发B元素的事件在IE8下会识别成A元素
Sep 04 Javascript
浅析JavaScript中的对象类型Object
May 26 Javascript
JavaScript Ajax实现异步通信
Dec 14 Javascript
Jquery实时监听input value的实例
Jan 26 Javascript
详解vue.js之绑定class和style的示例代码
Aug 24 Javascript
D3.js实现拓扑图的示例代码
Jun 30 Javascript
jquery实现简单拖拽效果
Jul 20 jQuery
js前端图片加载异常兜底方案
Jun 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实现让页面只能被百度gogole蜘蛛访问的方法
2009/12/29 PHP
php+mysql+ajax实现单表多字段多关键词查询的方法
2017/04/15 PHP
Laravel5.1 框架响应基本用法实例分析
2020/01/04 PHP
设置jsf的选择框h:selectOneMenu为不可编辑状态的方法
2014/01/07 Javascript
AngularJS表单编辑提交功能实例
2015/02/13 Javascript
JS+CSS实现的蓝色table选项卡效果
2015/10/08 Javascript
JS基于Mootools实现的个性菜单效果代码
2015/10/21 Javascript
jquery解析json格式数据的方法(对象、字符串)
2015/11/24 Javascript
angularjs在ng-repeat中使用ng-model遇到的问题
2016/01/21 Javascript
微信公众号开发 实现点击返回按钮就返回到聊天界面
2016/12/15 Javascript
node.js-v6新版安装具体步骤(分享)
2017/09/06 Javascript
JavaScript设计模式之工厂模式和抽象工厂模式定义与用法分析
2018/07/26 Javascript
vue 组件的封装之基于axios的ajax请求方法
2018/08/11 Javascript
详解JS中统计函数执行次数与执行时间
2018/09/04 Javascript
微信小程序简单的canvas裁剪图片功能详解
2019/07/12 Javascript
[01:11:28]DOTA2-DPC中国联赛定级赛 RNG vs Phoenix BO3第一场 1月8日
2021/03/11 DOTA
Python 随机生成中文验证码的实例代码
2013/03/20 Python
python实现快速排序的示例(二分法思想)
2018/03/12 Python
Pycharm导入Python包,模块的图文教程
2018/06/13 Python
自适应线性神经网络Adaline的python实现详解
2019/09/30 Python
Python实现平行坐标图的绘制(plotly)方式
2019/11/22 Python
Python面向对象原理与基础语法详解
2020/01/02 Python
如何通过命令行进入python
2020/07/06 Python
解决python便携版无法直接运行py文件的问题
2020/09/01 Python
PyQt5结合matplotlib绘图的实现示例
2020/09/15 Python
scrapy头部修改的方法详解
2020/12/06 Python
简述数据库的设计过程
2015/06/22 面试题
大三学生做职业规划:给未来找个方向
2014/02/24 职场文书
学校爱国卫生月活动总结
2014/06/25 职场文书
社区娱乐活动方案
2014/08/21 职场文书
团队会宣传标语
2014/10/09 职场文书
2015年七一建党节慰问信
2015/03/23 职场文书
学雷锋团日活动总结
2015/05/06 职场文书
学校捐款活动总结
2015/05/09 职场文书
篮球拉拉队口号
2015/12/25 职场文书
原生Javascript+HTML5一步步实现拖拽排序
2021/06/12 Javascript