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


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 相关文章推荐
JQuery 前台切换网站的样式实现
Jun 22 Javascript
键盘 keycode的值 javascript时触发事件时很有用的要素
Nov 02 Javascript
javascript学习笔记(十六) 系统对话框(alert、confirm、prompt)
Jun 20 Javascript
Javascript简单实现可拖动的div
Oct 22 Javascript
javascript实现客户端兼容各浏览器创建csv并下载的方法
Mar 23 Javascript
js实现iPhone界面风格的单选框和复选框按钮实例
Aug 18 Javascript
快速解决js动态改变dom元素属性后页面及时渲染的问题
Jul 06 Javascript
JavaScript中的splice方法用法详解
Jul 20 Javascript
微信小程序支付前端源码
Aug 29 Javascript
element-ui组件table实现自定义筛选功能的示例代码
Mar 15 Javascript
Async/Await替代Promise的6个理由
Jun 15 Javascript
解决Antd 里面的select 选择框联动触发的问题
Oct 24 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
ThinkPHP模板比较标签用法详解
2014/06/30 PHP
php猴子选大王问题解决方法
2015/05/12 PHP
PHP实现的迷你漂流瓶
2015/07/29 PHP
PHP中Enum(枚举)用法实例详解
2015/12/07 PHP
php实现简单的守护进程创建、开启与关闭操作
2019/08/13 PHP
gearman中任务的优先级和返回状态实例分析
2020/02/27 PHP
转自Jquery官方 jQuery1.1.3发布,速度提升800%,体积保持20K
2007/08/19 Javascript
jQuery对象的selector属性用法实例
2014/12/27 Javascript
再JavaScript的jQuery库中编写动画效果的指南
2015/08/13 Javascript
如何消除inline-block属性带来的标签间间隙
2016/03/31 Javascript
移动端界面的适配
2017/01/11 Javascript
vue指令以及dom操作详解
2017/03/04 Javascript
利用vueJs实现图片轮播实例代码
2017/06/03 Javascript
微信小程序实现的自定义分享功能示例
2019/02/12 Javascript
函数式编程入门实践(一)
2019/04/20 Javascript
js数据类型转换与流程控制操作实例分析
2019/12/18 Javascript
Python自动化构建工具scons使用入门笔记
2015/03/10 Python
Python之os操作方法(详解)
2017/06/15 Python
Python实现小数转化为百分数的格式化输出方法示例
2017/09/20 Python
使用python爬虫获取黄金价格的核心代码
2018/06/13 Python
numpy的文件存储.npy .npz 文件详解
2018/07/09 Python
Python 从列表中取值和取索引的方法
2018/12/25 Python
python3+PyQt5 数据库编程--增删改实例
2019/06/17 Python
浅谈tensorflow 中tf.concat()的使用
2020/02/07 Python
python实现暗通道去雾算法的示例
2020/09/27 Python
详解Django中的FBV和CBV对比分析
2021/03/01 Python
HTML5 语音搜索(淘宝店语音搜素)
2013/01/03 HTML / CSS
瑞典多品牌连锁店:Johnells
2021/01/13 全球购物
杭州信雅达系统.NET工程师面试试题
2015/02/08 面试题
西门豹教学反思
2014/02/04 职场文书
关于是否需要写商业计划书
2014/02/07 职场文书
公司财务部岗位职责
2015/04/14 职场文书
2015年采购员工作总结
2015/04/27 职场文书
先进教师个人主要事迹材料
2015/11/03 职场文书
Python爬虫实战之爬取携程评论
2021/06/02 Python
Redis 中使用 list,streams,pub/sub 几种方式实现消息队列的问题
2022/03/16 Redis