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


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 animate图片模向滑动示例代码
Jan 26 Javascript
JS实现静止元素自动移动示例
Apr 14 Javascript
js 获取时间间隔实现代码
May 12 Javascript
Bootstrap页面布局基础知识全面解析
Jun 13 Javascript
12 款 JS 代码测试必备工具(翻译)
Dec 13 Javascript
超级简易的JS计算器实例讲解(实现加减乘除)
Aug 08 Javascript
vue watch自动检测数据变化实时渲染的方法
Jan 16 Javascript
今天,小程序正式支持 SVG
Apr 20 Javascript
微信小程序实现左侧滑栏过程解析
Aug 26 Javascript
Vue Components 数字键盘的实现
Sep 18 Javascript
Vue页面切换和a链接的本质区别详解
Nov 12 Javascript
JS+canvas五子棋人机对战实现步骤详解
Jun 04 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批量生成随机用户名
2008/07/10 PHP
php zlib压缩和解压缩swf文件的代码
2008/12/30 PHP
Yii2学习笔记之汉化yii设置表单的描述(属性标签attributeLabels)
2017/02/07 PHP
PHP中Session ID的实现原理实例分析
2019/08/17 PHP
JavaScript 高效运行代码分析
2010/03/18 Javascript
jQuery ajax cache缓存问题
2010/07/01 Javascript
JS 操作符整理[推荐收藏]
2011/11/15 Javascript
JavaScript事件学习小结(五)js中事件类型之鼠标事件
2016/06/09 Javascript
jquery动态遍历Json对象的属性和值的方法
2016/07/27 Javascript
webpack vue项目开发环境局域网访问方法
2018/03/20 Javascript
JS中async/await实现异步调用的方法
2019/08/28 Javascript
layui操作列按钮个数和文字颜色的判断实例
2019/09/11 Javascript
node.js如何根据URL返回指定的图片详解
2020/10/21 Javascript
JavaScript实现音乐导航效果
2020/11/19 Javascript
python批量修改文件名的实现代码
2014/09/01 Python
Python快速从注释生成文档的方法
2016/12/26 Python
Python实现 多进程导入CSV数据到 MySQL
2017/02/26 Python
Python编程django实现同一个ip十分钟内只能注册一次
2017/11/03 Python
PyQt4编程之让状态栏显示信息的方法
2019/06/18 Python
numpy:找到指定元素的索引示例
2019/11/26 Python
详解有关PyCharm安装库失败的问题的解决方法
2020/02/02 Python
Tensorflow设置显存自适应,显存比例的操作
2020/02/03 Python
pandas中的ExcelWriter和ExcelFile的实现方法
2020/04/24 Python
基于Python第三方插件实现西游记章节标注汉语拼音的方法
2020/05/22 Python
Anaconda+vscode+pytorch环境搭建过程详解
2020/05/25 Python
英国最大的在线蜡烛商店:Candles Direct
2019/03/26 全球购物
食品安全责任书
2014/04/15 职场文书
学校运动会霸气口号
2014/06/07 职场文书
大学同学会活动方案
2014/08/20 职场文书
服务行业演讲稿
2014/09/02 职场文书
给女朋友的道歉短信
2015/05/12 职场文书
交通事故赔偿起诉书
2015/05/20 职场文书
民间借贷纠纷案件代理词
2015/05/26 职场文书
运动会主持人开幕词
2016/03/04 职场文书
git中cherry-pick命令的使用教程
2022/06/25 Servers
输入框跟随文字内容适配宽实现示例
2022/08/14 Javascript