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


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 字符串连接性能优化
Dec 20 Javascript
基于JQUERY的多级联动代码
Jan 24 Javascript
jQuery筛选器children()案例详解(图文)
Feb 17 Javascript
以Python代码实例展示kNN算法的实际运用
Oct 26 Javascript
深入php面向对象、模式与实践
Feb 16 Javascript
JS经典正则表达式笔试题汇总
Dec 15 Javascript
jQuery 添加样式属性的优先级别方法(推荐)
Jun 08 jQuery
浅谈React 服务器端渲染的使用
May 08 Javascript
基于Angularjs-router动态改变Title值的问题
Aug 30 Javascript
vue项目实现表单登录页保存账号和密码到cookie功能
Aug 31 Javascript
vue 解决循环引用组件报错的问题
Sep 06 Javascript
如何从头实现一个node.js的koa框架
Jun 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
DOTA2【瓜皮时刻】Vol.91 RTZ山史最惨“矿难”
2021/03/05 DOTA
咖啡因含量是由谁决定的?低因咖啡怎么来?低因咖啡适合什么人喝
2021/03/06 新手入门
dedecms后台验证码总提示错误的解决方法
2007/03/21 PHP
几个有用的php字符串过滤,转换函数代码
2012/05/01 PHP
2款PHP无限级分类实例代码
2015/11/11 PHP
PHP递归遍历指定文件夹内的文件实现方法
2016/11/15 PHP
JavaScript CSS修改学习第二章 样式
2010/02/19 Javascript
基于jquery的代码显示区域自动拉长效果
2011/12/07 Javascript
Jquery多选下拉列表插件jquery multiselect功能介绍及使用
2013/05/24 Javascript
Javascript 遍历页面text控件详解
2014/01/06 Javascript
js识别不同浏览器基于userAgent做判断
2014/07/29 Javascript
JavaScript实现把数字转换成中文
2015/06/29 Javascript
Jquery基础教程之DOM操作
2015/08/19 Javascript
微信小程序 教程之数据绑定
2016/10/18 Javascript
利用JavaScript实现拖拽改变元素大小
2016/12/14 Javascript
详解js树形控件—zTree使用总结
2016/12/28 Javascript
JS实现禁止高频率连续点击的方法【基于ES6语法】
2017/04/25 Javascript
详解VUE 定义全局变量的几种实现方式
2017/06/01 Javascript
详解vue-cil和webpack中本地静态图片的路径问题解决方案
2017/09/27 Javascript
JavaScript事件对象event用法分析
2018/07/27 Javascript
如何使用JavaScript实现栈与队列
2019/06/24 Javascript
jquery实现弹窗(系统提示框)效果
2019/12/10 jQuery
在vue项目中引用Antv G2,以饼图为例讲解
2020/10/28 Javascript
如何解决django配置settings时遇到Could not import settings 'conf.local'
2014/11/18 Python
python将MongoDB里的ObjectId转换为时间戳的方法
2015/03/13 Python
浅谈Python的异常处理
2016/06/19 Python
Python的网络编程库Gevent的安装及使用技巧
2016/06/24 Python
numpy使用fromstring创建矩阵的实例
2018/06/15 Python
python 实现有道翻译功能
2021/02/26 Python
Delphi工程师笔试题
2013/09/21 面试题
应届生护士求职信
2013/11/01 职场文书
奥巴马胜选演讲稿
2014/05/15 职场文书
关于建议书的格式范文
2014/05/20 职场文书
会议开幕致辞怎么写
2016/03/03 职场文书
聊聊redis-dump工具安装问题
2022/01/18 Redis
openEuler 搭建java开发环境的详细过程
2022/06/10 Servers