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


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 相关文章推荐
瀑布流布局代码一例
Apr 11 Javascript
jquery淡入淡出效果简单实例
Jan 14 Javascript
Windows系统下安装Node.js的步骤图文详解
Nov 15 Javascript
Javascript仿京东放大镜的效果
Mar 01 Javascript
关于jQuery中fade(),show()起始位置的一点小发现
Apr 25 jQuery
浅谈jQuery框架Ajax常用选项
Jul 08 jQuery
vue-quill-editor实现图片上传功能
Aug 08 Javascript
微信小程序movable view移动图片和双指缩放实例代码
Aug 08 Javascript
解决Vue 浏览器后退无法触发beforeRouteLeave的问题
Dec 24 Javascript
解决Vue不能检测数组或对象变动的问题
Feb 24 Javascript
react quill中图片上传由默认转成base64改成上传到服务器的方法
Oct 30 Javascript
js实现计算器功能
Aug 10 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使用preg_split()分割特殊字符(元字符等)的方法分析
2017/02/04 PHP
漂亮的widgets,支持换肤和后期开发新皮肤(2007-4-27已更新1.7alpha)
2007/04/27 Javascript
DIY jquery plugin - tabs标签切换实现代码
2010/12/11 Javascript
javascript 冒泡排序 正序和倒序实现代码
2010/12/14 Javascript
javascript中全局对象的parseInt()方法使用介绍
2013/12/19 Javascript
使用javascript做的一个随机点名程序
2014/02/13 Javascript
Node.js中的事件驱动编程详解
2014/08/16 Javascript
jQuery中[attribute!=value]选择器用法实例
2014/12/31 Javascript
js实现可得到不同颜色值的颜色选择器实例
2015/02/28 Javascript
基于vue实现多引擎搜索及关键字提示
2017/03/16 Javascript
JavaScript实现QQ列表展开收缩扩展功能
2017/10/30 Javascript
解决vue中对象属性改变视图不更新的问题
2018/02/23 Javascript
基于vue-router 多级路由redirect 重定向的问题
2018/09/03 Javascript
vue生命周期的探索
2019/04/03 Javascript
vue+elementUI实现表单和图片上传及验证功能示例
2019/05/14 Javascript
小程序实现新用户判断并跳转激活的方法
2019/05/20 Javascript
Node.js学习教程之Module模块
2019/09/03 Javascript
微信自定义分享链接信息(标题,图片和内容)实现过程详解
2019/09/04 Javascript
vue+vant实现商品列表批量倒计时功能
2020/01/13 Javascript
el-form 多层级表单的实现示例
2020/09/10 Javascript
vue项目中js-cookie的使用存储token操作
2020/11/13 Javascript
[01:30]2016国际邀请赛中国区预选赛神秘商店火爆开启
2016/06/26 DOTA
学习python处理python编码问题
2011/03/13 Python
Python实现微信公众平台自定义菜单实例
2015/03/20 Python
浅谈python中requests模块导入的问题
2018/05/18 Python
Windows下python3.7安装教程
2018/07/31 Python
Python爬虫实现“盗取”微信好友信息的方法分析
2019/09/16 Python
英国领先的高街书籍专家:Waterstones
2018/02/01 全球购物
凌阳科技股份有限公司C++程序员面试题笔试题
2014/11/20 面试题
如何通过jdbc调用存储过程
2012/04/19 面试题
垃圾分类的活动方案
2014/08/15 职场文书
敬老月活动总结
2014/08/28 职场文书
销售工作决心书
2015/02/04 职场文书
财务人员廉洁自律心得体会
2016/01/13 职场文书
DBCA命令行搭建Oracle ADG的流程
2021/06/11 Oracle
浅谈MySQL表空间回收的正确姿势
2021/10/05 MySQL