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


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 相关文章推荐
通过遮罩层实现浮层DIV登录的js代码
Feb 07 Javascript
jQuery语法小结(超实用)
Dec 31 Javascript
基于Jquery插件实现跨域异步上传文件功能
Apr 26 Javascript
浅谈JavaScript的全局变量与局部变量
Jun 10 Javascript
jQuery如何解决IE输入框不能输入的问题
Oct 08 Javascript
jQuery grep()方法详解及实例代码
Oct 30 Javascript
node中Express 动态设置端口的方法
Aug 04 Javascript
浅谈React的最大亮点之虚拟DOM
May 29 Javascript
jQuery AJAX 方法success()后台传来的4种数据详解
Aug 08 jQuery
node.js使用免费的阿里云ip查询获取ip所在地【推荐】
Sep 03 Javascript
微信小程序(订阅消息)功能
Oct 25 Javascript
vue 限制input只能输入正数的操作
Aug 05 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 使用MySQL管理Session的回调函数详解
2013/06/21 PHP
PHP获取MySql新增记录ID值的3种方法
2014/06/24 PHP
php去除html标记的原生函数详解
2015/01/27 PHP
使用ltrace工具跟踪PHP库函数调用的方法
2016/04/25 PHP
Yii2组件之多图上传插件FileInput的详细使用教程
2016/06/20 PHP
如何用javascript判断录入的日期是否合法
2007/01/08 Javascript
jQuery.fn和jQuery.prototype区别介绍
2013/10/05 Javascript
IE6下javasc#ipt:void(0) 无效的解决方法
2013/12/23 Javascript
js,jquery滚动/跳转页面到指定位置的实现思路
2014/06/03 Javascript
JavaScript对数组进行随机重排的方法
2015/07/22 Javascript
AngularJS手动表单验证
2016/02/01 Javascript
ES6生成器用法实例分析
2017/04/10 Javascript
bootstrap modal+gridview实现弹出框效果
2017/08/15 Javascript
React Native中Navigator的使用方法示例
2017/10/13 Javascript
利用JavaScript缓存远程窃取Wi-Fi密码的思路详解
2018/11/05 Javascript
JavaScript对JSON数组简单排序操作示例
2019/01/31 Javascript
vue实现的微信机器人聊天功能案例【附源码下载】
2019/02/18 Javascript
Vue 使用计时器实现跑马灯效果的实例代码
2019/07/11 Javascript
如何利用vue实现波谱拟合详解
2020/11/05 Javascript
[26:21]浴火之凤-TI4世界冠军Newbee战队纪录片
2014/08/07 DOTA
[01:10]DOTA2次级职业联赛 - EP战队宣传片
2014/12/01 DOTA
[01:03:59]2018DOTA2亚洲邀请赛3月30日 小组赛B组VGJ.T VS Secret
2018/03/31 DOTA
Python运用于数据分析的简单教程
2015/03/27 Python
python opencv 直方图反向投影的方法
2018/02/24 Python
Python中实现单例模式的n种方式和原理
2018/11/14 Python
tensorflow实现二维平面模拟三维数据教程
2020/02/11 Python
python用WxPython库实现无边框窗体和透明窗体实现方法详解
2020/02/21 Python
pycharm运行程序时看不到任何结果显示的解决
2020/02/21 Python
基于Python模拟浏览器发送http请求
2020/11/06 Python
Python爬虫爬取ts碎片视频+验证码登录功能
2021/02/22 Python
戴森美国官网:Dyson美国
2016/09/11 全球购物
荷兰皇家航空公司官方网站:KLM Royal Dutch Airlines
2017/12/07 全球购物
Guess美国官网:美国知名服装品牌
2019/04/08 全球购物
澳大利亚床上用品、浴巾和家居用品购物网站:Bambury
2020/04/16 全球购物
大明湖导游词
2015/02/03 职场文书
爱牙日宣传活动总结
2015/02/05 职场文书