只需一行代码,轻松实现一个在线编辑器


Posted in Javascript onNovember 12, 2013

在大部分人眼里,技术宅给人的印象是沉默寡言,总摸不透他心里想些什么,彼此都保持距离。作为半个程序员,我觉得真正的技术宅大部分时间都在找乐子,鼓捣各种想法,和大部分人的极客心理是一样的,程序员也还爱讲笑话,也喜欢烧菜做饭,虽然大多是为了减减压,这样看来和常人没什么不一样。

不一样的地方,技术宅崇尚极致,喜欢极简,又希望简约不简单,背后就是技术宅满心思的不断的尝试,我正在看着一出好戏在上演:

只需一行代码,轻松实现一个在线编辑器

"程序员 Jose Jesus Perez Aguinaga 在 CoderWall 分享了一个小技巧:在浏览器地址栏中输入一行代码:data:text/html, <html contenteditable> ,回车即可把浏览器变临时编辑器(需要浏览器支持 HTML5 属性 contenteditable)。不少程序员受 Jose 的启发,开始对这行代码加工改造,比如改成支持 Ruby 语法高亮的编辑器……"

从引子中可以看到,本来只是简短的小段代码: data:text/html, <html contenteditable>,经过程序员们不断改造,从一个简单的可编辑页面,逐步变成了包括支持 Java、Ruby、Python 等多种 编程语言高亮的代码编辑器,截至不到 1 个小时的最后更新,我已经看到了一个和 notepad.cc 网站功能相近,使用了第三方网站数据库 API 服务存储内容的 在线编辑器 了:

data:text/html,
<style type="text/css">
#e {
  position:absolute;
  top:0;
  right:0;
  bottom:0;
  left:0;
  font-size:16px;
}
</style>
<div id="e"></div>
<script src="http://d1n0x3qji82z53.cloudfront.net/src-min-noconflict/ace.js"></script>
<script src="http://code.jquery.com/jquery-1.9.0.min.js"></script>
<script>
var myKey="SecretKeyz";
$(document).ready(function(){
    var e = ace.edit("e");
    var url = "http://api.openkeyval.org/"+myKey;
    $.ajax({
      url: url,
      dataType: "jsonp",
      success: function(data){
       e.setTheme("ace/theme/tomorrow_night_eighties");
       e.getSession().setMode("ace/mode/markdown");
       e.setValue(data);
      }
    });
    $("#e").on("keydown", function (b) {
      if (b.ctrlKey && 83 == b.which) {
        b.preventDefault();
        var data = myKey+"="+encodeURIComponent(e.getValue());
        $.ajax({
          data: data,
          url: "http://api.openkeyval.org/store/",
          dataType: "jsonp",
          success: function(data){
            alert("Saved.");
          }
        });
      }
    });
});
</script>

将以上代码完整复制,粘贴到 Chrome 或者 Firefox,Safari 浏览器地址栏中(不支持低版本 IE 浏览器),回车打开,稍等片刻一个支持 CTRL + S 保存内容的在线编辑器呈现眼前。

仅一行代码,实现功能相当于系统的记事本程序,感慨技术宅的艺术造诣吧?~

Javascript 相关文章推荐
JavaScript 提升运行速度之循环篇 译文
Aug 15 Javascript
Exjs 入门篇
Apr 07 Javascript
基于JQuery的cookie插件
Apr 07 Javascript
JavaScript 代码压缩工具小结
Feb 27 Javascript
jquery仿搜索自动联想功能代码
May 23 Javascript
通过JS来动态的修改url,实现对url的增删查改
Sep 01 Javascript
js省市县三级联动效果实例
Apr 15 Javascript
Javascript仿京东放大镜的效果
Mar 01 Javascript
纯js代码生成可搜索选择下拉列表的实例
Jan 11 Javascript
微信小程序 wx:for 与 wx:for-items 与 wx:key的正确用法
May 19 Javascript
JS如何实现在弹出窗口中加载页面
Dec 03 Javascript
JavaScript 中for/of,for/in 的详细介绍
Nov 17 Javascript
JS中实现replaceAll的方法(实例代码)
Nov 12 #Javascript
jquery.validate的使用说明介绍
Nov 12 #Javascript
javascript 函数及作用域总结介绍
Nov 12 #Javascript
Javascript之this关键字深入解析
Nov 12 #Javascript
js hover 定时器(实例代码)
Nov 12 #Javascript
JavaScript的setAttribute兼容性问题解决方法
Nov 11 #Javascript
javascript实用小函数使用介绍
Nov 11 #Javascript
You might like
PHP中将ip地址转成十进制数的两种实用方法
2013/08/15 PHP
PHP实现支持GET,POST,Multipart/form-data的HTTP请求类
2014/09/24 PHP
php 运算符与表达式详细介绍
2016/11/30 PHP
yii2.0框架场景的简单使用示例
2020/01/25 PHP
jQuery使用手册之三 CSS操作
2007/03/24 Javascript
innerhtml用法 innertext用法 以及innerHTML与innertext的区别
2009/10/26 Javascript
SlideView 图片滑动(扩展/收缩)展示效果
2010/08/01 Javascript
精通Javascript系列之Javascript基础篇
2011/06/07 Javascript
基于JQUERY的多级联动代码
2012/01/24 Javascript
js 在定义的时候立即执行的函数表达式(function)写法
2013/01/16 Javascript
Extjs实现进度条的两种便捷方式
2013/09/26 Javascript
jQuery层动画定位滑动效果的方法
2015/04/30 Javascript
JavaScript实现九九乘法表的简单实例
2016/06/07 Javascript
jquery.zclip轻量级复制失效问题
2017/01/08 Javascript
d3.js中冷门却实用的内置函数总结
2017/02/04 Javascript
jQuery创建及操作xml格式数据示例
2018/05/26 jQuery
Angularjs实现页面模板清除的方法
2018/07/20 Javascript
vue项目在安卓低版本机显示空白的原因分析(两种)
2018/09/04 Javascript
跟混乱的页面弹窗说再见
2019/04/11 Javascript
小程序云开发获取不到数据库记录的解决方法
2019/05/18 Javascript
layui框架与SSM前后台交互的方法
2019/09/12 Javascript
在vue中使用jsx语法的使用方法
2019/09/30 Javascript
js实现二级联动简单实例
2020/01/11 Javascript
采用Psyco实现python执行速度提高到与编译语言一样的水平
2014/10/11 Python
小白入门篇使用Python搭建点击率预估模型
2018/10/12 Python
对Python之gzip文件读写的方法详解
2019/02/08 Python
Python2.7版os.path.isdir中文路径返回false的解决方法
2019/06/21 Python
Pandas之DataFrame对象的列和索引之间的转化
2019/06/25 Python
Pandas中DataFrame的分组/分割/合并的实现
2019/07/16 Python
面试求职的个人自我评价
2013/11/16 职场文书
大学生个人简历自我评价
2013/11/16 职场文书
门前三包责任书
2014/04/15 职场文书
2014年教师党员公开承诺书
2014/05/28 职场文书
2014年教学工作总结
2014/11/13 职场文书
变长双向rnn的正确使用姿势教学
2021/05/31 Python
24年收藏2000多部退役军用电台
2022/02/18 无线电