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


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 Tips 使用DocumentFragment加快DOM渲染速度
Jun 28 Javascript
判断文件是否正在被使用的JS代码
Dec 21 Javascript
Javscript删除数组中指定元素并返回新数组
Mar 06 Javascript
实例讲解js验证表单项是否为空的方法
Jan 09 Javascript
jQuery Easyui 验证两次密码输入是否相等
May 13 Javascript
JS实现动态给标签控件添加事件的方法示例
May 13 Javascript
jquery.guide.js新版上线操作向导镂空提示jQuery插件(推荐)
May 20 jQuery
mui框架移动开发初体验详解
Oct 11 Javascript
基于jquery的on和click的区别详解
Jan 15 jQuery
vue响应式系统之observe、watcher、dep的源码解析
Apr 09 Javascript
Vue项目中使用jquery的简单方法
May 16 jQuery
浅析JavaScript预编译和暗示全局变量
Sep 03 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
超神学院:天使彦公认最美的三个视角,网友:我的天使快下凡吧!
2020/03/02 国漫
php入门教程 精简版
2009/12/13 PHP
PHP实现获取域名的方法小结
2014/11/05 PHP
PHP实现websocket通信的方法示例
2018/08/28 PHP
用jscript实现列出安装的软件列表
2007/06/18 Javascript
JS 自动安装exe程序
2008/11/30 Javascript
Javascript insertAfter() 实现函数代码
2011/10/12 Javascript
jquery实现预览提交的表单代码分享
2014/05/21 Javascript
5个JavaScript经典面试题
2014/10/13 Javascript
jQuery表单域选择器用法分析
2015/02/10 Javascript
js限制文本框只能输入中文的方法
2015/08/11 Javascript
原生ajax处理json格式数据的实例代码
2016/12/25 Javascript
详解JavaScript中js对象与JSON格式字符串的相互转换
2017/02/14 Javascript
JS闭包用法实例分析
2017/03/27 Javascript
详解A标签中href=&quot;&quot;的几种用法
2017/08/20 Javascript
基于 Vue 实现一个酷炫的 menu插件
2017/11/14 Javascript
一文搞懂ES6中的Map和Set
2019/05/20 Javascript
vue使用better-scroll实现滑动以及左右联动
2020/06/30 Javascript
js实现飞机大战小游戏
2020/08/26 Javascript
用Python编写一个每天都在系统下新建一个文件夹的脚本
2015/05/04 Python
Pycharm远程调试openstack的方法
2017/11/21 Python
Python无损音乐搜索引擎实现代码
2018/02/02 Python
解决DataFrame排序sort的问题
2018/06/07 Python
在Python 中同一个类两个函数间变量的调用方法
2019/01/31 Python
CSS3 重置iphone浏览器按钮input,select等表单元素的默认样式
2014/10/11 HTML / CSS
html5时钟实现代码
2010/10/22 HTML / CSS
加拿大折扣、优惠券和交易网站:WagJag
2018/02/07 全球购物
ECCO英国官网:丹麦鞋履品牌
2019/09/03 全球购物
家长学校实施方案
2014/03/15 职场文书
医院护士工作检讨书
2014/10/26 职场文书
2015年团支部工作总结
2015/04/03 职场文书
2016年校园植树节广播稿
2015/12/17 职场文书
2016计算机专业毕业生自荐信
2016/01/28 职场文书
街道办残联2016年助残日活动总结
2016/04/01 职场文书
Golang获取List列表元素的四种方式
2022/04/20 Golang
使用JS前端技术实现静态图片局部流动效果
2022/08/05 Javascript