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 相关文章推荐
PJ Blog修改-禁止复制的代码和方法
Oct 25 Javascript
使用javascript实现有效时间的控制,并显示将要过期的时间
Jan 02 Javascript
node.js解决获取图片真实文件类型的问题
Dec 20 Javascript
判断浏览器的内核及版本号方法汇总
Jan 05 Javascript
基于Jquery实现表单验证
Jul 20 Javascript
微信小程序 扎金花简单实例
Feb 21 Javascript
Vue计算属性的学习笔记
Mar 22 Javascript
老生常谈js-react组件生命周期
May 02 Javascript
AngularJS中下拉框的基本用法示例
Oct 11 Javascript
vue定义全局变量和全局方法的方法示例
Aug 01 Javascript
教你30秒发布一个TypeScript包到NPM的方法步骤
Jul 22 Javascript
Vue中使用Echarts仪表盘展示实时数据的实现
Nov 01 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 压缩文件夹的类代码
2009/11/05 PHP
codeigniter集成ucenter1.6双向通信的解决办法
2014/06/12 PHP
PHP简单实现“相关文章推荐”功能的方法
2014/07/19 PHP
PHP 导出Excel示例分享
2014/08/18 PHP
PHP中常见的密码处理方式和建议总结
2018/10/14 PHP
js同时按下两个方向键
2007/12/01 Javascript
js ondocumentready onmouseover onclick onmouseout 样式
2010/07/22 Javascript
js获取GridView中行数据的两种方法 分享
2013/07/13 Javascript
一些老手都不一定知道的JavaScript技巧
2014/05/06 Javascript
教你用AngularJS框架一行JS代码实现控件验证效果
2014/06/23 Javascript
javascript图片延迟加载实现方法及思路
2015/12/31 Javascript
JavaScript实现鼠标滚轮控制页面图片切换功能示例
2017/10/14 Javascript
Mac 安装 nodejs方法(图文详细步骤)
2017/10/30 NodeJs
微信小程序自动客服功能
2017/11/02 Javascript
Vue项目总结之webpack常规打包优化方案
2019/06/06 Javascript
Vue请求java服务端并返回数据代码实例
2019/11/28 Javascript
js Math数学简单使用操作示例
2020/03/13 Javascript
vue@cli3项目模板怎么使用public目录下的静态文件
2020/07/07 Javascript
vue实现打地鼠小游戏
2020/08/21 Javascript
解决nuxt 自定义全局方法,全局属性,全局变量的问题
2020/11/05 Javascript
vue打开新窗口并实现传参的图文实例
2021/03/04 Vue.js
[51:36]EG vs VP 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
Python获取本机所有网卡ip,掩码和广播地址实例代码
2018/01/22 Python
使用Python控制摄像头拍照并发邮件
2019/04/23 Python
python验证身份证信息实例代码
2019/05/06 Python
django框架使用orm实现批量更新数据的方法
2019/06/21 Python
python实现的接收邮件功能示例【基于网易POP3服务器】
2019/09/11 Python
Flask框架请求钩子与request请求对象用法实例分析
2019/11/07 Python
Django+Celery实现动态配置定时任务的方法示例
2020/05/26 Python
Pyinstaller 打包发布经验总结
2020/06/02 Python
Python 如何实现访问者模式
2020/07/28 Python
python 使用xlsxwriter循环向excel中插入数据和图片的操作
2021/01/01 Python
屈臣氏俄罗斯在线商店:Watsons俄罗斯
2020/08/03 全球购物
年度考核自我鉴定
2014/03/19 职场文书
公务员中国梦演讲稿
2014/08/19 职场文书
2015年国庆节活动总结
2015/03/23 职场文书