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


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 相关文章推荐
判断是否输入完毕再激活提交按钮
Jun 26 Javascript
asp 的 分词实现代码
May 24 Javascript
对javascript的一点点认识总结《javascript高级程序设计》读书笔记
Nov 30 Javascript
js实现鼠标拖动图片并兼容IE/FF火狐/谷歌等主流浏览器
Jun 06 Javascript
jquery中animate动画积累的解决方法
Oct 05 Javascript
jquery复选框全选/取消示例
Dec 30 Javascript
javascript删除一个html元素节点的方法
Dec 20 Javascript
JS组件Bootstrap Table表格多行拖拽效果实现代码
Dec 08 Javascript
浅析jquery unbind()方法移除元素绑定的事件
May 24 Javascript
jQuery操作cookie
Aug 08 Javascript
element-ui 中的table的列隐藏问题解决
Aug 24 Javascript
vue实现滑动到底部加载更多效果
Oct 27 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使用gzip压缩传输js和css文件的方法
2015/07/29 PHP
PHP的Yii框架的常用日志操作总结
2015/12/08 PHP
在WordPress中使用wp-cron插件来设置定时任务
2015/12/10 PHP
PHP中的Iterator迭代对象属性详解
2019/04/12 PHP
javascript 定义初始化数组函数
2009/09/07 Javascript
js获取TreeView控件选中节点的Text和Value值的方法
2012/11/24 Javascript
第一次接触神奇的Bootstrap网格系统
2016/07/27 Javascript
Vuejs第六篇之Vuejs与form元素实例解析
2016/09/05 Javascript
基于bootstrap风格的弹框插件
2016/12/28 Javascript
Bootstrap面板使用方法
2017/01/16 Javascript
Angular实现下拉框模糊查询功能示例
2018/01/03 Javascript
JavaScript实现图片懒加载的方法分析
2018/07/05 Javascript
JS实现的视频弹幕效果示例
2018/08/17 Javascript
js实现点击图片在屏幕中间弹出放大效果
2019/09/11 Javascript
vue el-table实现自定义表头
2019/12/11 Javascript
JS数组方法reverse()用法实例分析
2020/01/18 Javascript
javascript canvas实现简易时钟例子
2020/09/05 Javascript
vue+elementUI 实现内容区域高度自适应的示例
2020/09/26 Javascript
[02:32]DOTA2英雄基础教程 祸乱之源
2013/12/23 DOTA
[01:33]一分钟玩转DOTA2第三弹:DOTA2&DotA快捷操作大对比
2014/06/04 DOTA
python实现简单的TCP代理服务器
2014/10/08 Python
基python实现多线程网页爬虫
2015/09/06 Python
在pandas中一次性删除dataframe的多个列方法
2018/04/10 Python
解决Django中多条件查询的问题
2019/07/18 Python
python的re模块使用方法详解
2019/07/26 Python
Python操作Sqlite正确实现方法解析
2020/02/05 Python
利用Python发送邮件或发带附件的邮件
2020/11/12 Python
南非领先的在线旅行社:Travelstart南非
2016/09/04 全球购物
美国南部最大的家族百货公司:Belk
2017/01/30 全球购物
工作会议欢迎词
2014/01/16 职场文书
财务管理专业求职信
2014/06/11 职场文书
医院合作协议书
2014/08/19 职场文书
物业项目经理岗位职责
2015/04/01 职场文书
2016年度优秀辅导员事迹材料
2016/02/26 职场文书
Python 如何安装Selenium
2021/05/06 Python
ant design charts 获取后端接口数据展示
2022/05/25 Javascript