'瀏覽器 1 秒變身 Python 編輯器'

""瀏覽器 1 秒變身 Python 編輯器

這是早期的一篇文章,分享的內容我到現在還是覺得非常有意思。

EarlGrey@編程派

瀏覽器不是用來瀏覽網頁、觀看網絡視頻的嗎?難道還可以在瀏覽器裡碼代碼嗎?

沒錯!真的可以。

現在已經有很多類似JSFiddle、JSBin這樣在線編輯代碼的網站,不過我們今天要分享的方法並不需要註冊第三方網站,只需要在瀏覽器的地址欄輸入一行代碼即可。

我們首先來看一下具體的效果。

"瀏覽器 1 秒變身 Python 編輯器

這是早期的一篇文章,分享的內容我到現在還是覺得非常有意思。

EarlGrey@編程派

瀏覽器不是用來瀏覽網頁、觀看網絡視頻的嗎?難道還可以在瀏覽器裡碼代碼嗎?

沒錯!真的可以。

現在已經有很多類似JSFiddle、JSBin這樣在線編輯代碼的網站,不過我們今天要分享的方法並不需要註冊第三方網站,只需要在瀏覽器的地址欄輸入一行代碼即可。

我們首先來看一下具體的效果。

瀏覽器 1 秒變身 Python 編輯器

上面這幅圖中,我們發現在瀏覽器中可以輸入Python代碼,而且支持語法高亮和自動縮進功能。那麼,這究竟是怎麼實現的呢?

這其實可以追溯到2012年時,一位叫Jose Aguinaga的國外開發者在Coderwall上分享的一個小貼士。

將瀏覽器變成一個簡易文本編輯器

一開始的功能非常簡單,根本沒有語法高亮,也沒有自動縮進,僅僅是將瀏覽器變成一個文本編輯器而已。

代碼如下:

  1. data:text/html, <html contenteditable>

只需要將上面的代碼複製粘貼到瀏覽器的地址欄,然後按回車,就可以讓瀏覽器變成編輯器。是不是非常簡單?

背後的原理並不高深,只是用到了Data URI格式而已。這行代碼告訴瀏覽器渲染一個HTML頁面,而這個頁面具備一個H5屬性:contenteditable。

Data URI是由RFC 2397定義的一種把小文件直接嵌入文檔的方案。格式如下:data:[

請想嘗試的朋友注意,這行代碼只適用於Chrome等現代瀏覽器。如果你還在使用IE8等過時瀏覽器的話,是沒有效果的。

各種樣式衍生而出

由於上面這個小技巧的出現,激發了許多開發者的的激情,不斷分享自己的版本。

自動切換背景顏色

下面這段代碼,可以讓編輯器在你一邊打字時,一遍切換背景顏色:

  1. data:text/html, <html><head><link href='http://fonts.googleapis.com/css?family=Open+Sans' rel='stylesheet' type='text/css'><style type="text/css"> html { font-family: "Open Sans" } * { -webkit-transition: all linear 1s; }</style><script>window.onload=function{var e=false;var t=0;setInterval(function{if(!e){t=Math.round(Math.max(0,t-Math.max(t/3,1)))}var n=(255-t*2).toString(16);document.body.style.backgroundColor="#ff"+n+""+n},1e3);var n=;document.onkeydown=function{t=Math.min(128,t+2);e=true;clearTimeout(n);n=setTimeout(function{e=false},1500)}}</script></head><body contenteditable style="font-size:2rem;line-height:1.4;max-width:60rem;margin:0 auto;padding:4rem;">

筆記本樣式

下面這段代碼可以將瀏覽器頁面變成一個筆記本的樣式,看上去很有感覺:

  1. data:text/html;charset=utf-8, <title>TextEditor</title> <link rel="shortcut icon" href="http://g.etfv.co/https://docs.google.com"/> <style> html{height: 100%;} body{background: -webkit-linear-gradient(#f0f0f0, #fff); padding: 3%; height: 94%;} .paper { font: normal 12px/1.5 "Lucida Grande", arial, sans-serif; width: 50%; height: 80%; margin: 0 auto; padding: 6px 5px 4px 42px; position: relative; color: #444; line-height: 20px; border: 1px solid #d2d2d2; background: #fff; background: -webkit-gradient(linear, 0 0, 0 100%, from(#d9eaf3), color-stop(4%, #fff)) 0 4px; background: -webkit-linear-gradient(top, #d9eaf3 0%, #fff 8%) 0 4px; background: -moz-linear-gradient(top, #d9eaf3 0%, #fff 8%) 0 4px; background: -ms-linear-gradient(top, #d9eaf3 0%, #fff 8%) 0 4px; background: -o-linear-gradient(top, #d9eaf3 0%, #fff 8%) 0 4px; background: linear-gradient(top, #d9eaf3 0%, #fff 8%) 0 4px; -webkit-background-size: 100% 20px; -moz-background-size: 100% 20px; -ms-background-size: 100% 20px; -o-background-size: 100% 20px; background-size: 100% 20px; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; -webkit-box-shadow: 0 1px 2px rgba(0,0,0,0.07); -moz-box-shadow: 0 1px 2px rgba(0,0,0,0.07); box-shadow: 0 1px 2px rgba(0,0,0,0.07); } .paper::before { content: ''; position: absolute; width: 4px; top: 0; left: 30px; bottom: 0; border: 1px solid; border-color: transparent #efe4e4; } textarea{display: block; width:94%;margin:0 auto;padding:3.8% 3%; border: none; outline: none; height: 94%; background: transparent; line-height: 20px;} </style> <body spellcheck="false"> <div class="paper"> <textarea autofocus="autofocus"></textarea> </div> </body> </html>

"瀏覽器 1 秒變身 Python 編輯器

這是早期的一篇文章,分享的內容我到現在還是覺得非常有意思。

EarlGrey@編程派

瀏覽器不是用來瀏覽網頁、觀看網絡視頻的嗎?難道還可以在瀏覽器裡碼代碼嗎?

沒錯!真的可以。

現在已經有很多類似JSFiddle、JSBin這樣在線編輯代碼的網站,不過我們今天要分享的方法並不需要註冊第三方網站,只需要在瀏覽器的地址欄輸入一行代碼即可。

我們首先來看一下具體的效果。

瀏覽器 1 秒變身 Python 編輯器

上面這幅圖中,我們發現在瀏覽器中可以輸入Python代碼,而且支持語法高亮和自動縮進功能。那麼,這究竟是怎麼實現的呢?

這其實可以追溯到2012年時,一位叫Jose Aguinaga的國外開發者在Coderwall上分享的一個小貼士。

將瀏覽器變成一個簡易文本編輯器

一開始的功能非常簡單,根本沒有語法高亮,也沒有自動縮進,僅僅是將瀏覽器變成一個文本編輯器而已。

代碼如下:

  1. data:text/html, <html contenteditable>

只需要將上面的代碼複製粘貼到瀏覽器的地址欄,然後按回車,就可以讓瀏覽器變成編輯器。是不是非常簡單?

背後的原理並不高深,只是用到了Data URI格式而已。這行代碼告訴瀏覽器渲染一個HTML頁面,而這個頁面具備一個H5屬性:contenteditable。

Data URI是由RFC 2397定義的一種把小文件直接嵌入文檔的方案。格式如下:data:[

請想嘗試的朋友注意,這行代碼只適用於Chrome等現代瀏覽器。如果你還在使用IE8等過時瀏覽器的話,是沒有效果的。

各種樣式衍生而出

由於上面這個小技巧的出現,激發了許多開發者的的激情,不斷分享自己的版本。

自動切換背景顏色

下面這段代碼,可以讓編輯器在你一邊打字時,一遍切換背景顏色:

  1. data:text/html, <html><head><link href='http://fonts.googleapis.com/css?family=Open+Sans' rel='stylesheet' type='text/css'><style type="text/css"> html { font-family: "Open Sans" } * { -webkit-transition: all linear 1s; }</style><script>window.onload=function{var e=false;var t=0;setInterval(function{if(!e){t=Math.round(Math.max(0,t-Math.max(t/3,1)))}var n=(255-t*2).toString(16);document.body.style.backgroundColor="#ff"+n+""+n},1e3);var n=;document.onkeydown=function{t=Math.min(128,t+2);e=true;clearTimeout(n);n=setTimeout(function{e=false},1500)}}</script></head><body contenteditable style="font-size:2rem;line-height:1.4;max-width:60rem;margin:0 auto;padding:4rem;">

筆記本樣式

下面這段代碼可以將瀏覽器頁面變成一個筆記本的樣式,看上去很有感覺:

  1. data:text/html;charset=utf-8, <title>TextEditor</title> <link rel="shortcut icon" href="http://g.etfv.co/https://docs.google.com"/> <style> html{height: 100%;} body{background: -webkit-linear-gradient(#f0f0f0, #fff); padding: 3%; height: 94%;} .paper { font: normal 12px/1.5 "Lucida Grande", arial, sans-serif; width: 50%; height: 80%; margin: 0 auto; padding: 6px 5px 4px 42px; position: relative; color: #444; line-height: 20px; border: 1px solid #d2d2d2; background: #fff; background: -webkit-gradient(linear, 0 0, 0 100%, from(#d9eaf3), color-stop(4%, #fff)) 0 4px; background: -webkit-linear-gradient(top, #d9eaf3 0%, #fff 8%) 0 4px; background: -moz-linear-gradient(top, #d9eaf3 0%, #fff 8%) 0 4px; background: -ms-linear-gradient(top, #d9eaf3 0%, #fff 8%) 0 4px; background: -o-linear-gradient(top, #d9eaf3 0%, #fff 8%) 0 4px; background: linear-gradient(top, #d9eaf3 0%, #fff 8%) 0 4px; -webkit-background-size: 100% 20px; -moz-background-size: 100% 20px; -ms-background-size: 100% 20px; -o-background-size: 100% 20px; background-size: 100% 20px; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; -webkit-box-shadow: 0 1px 2px rgba(0,0,0,0.07); -moz-box-shadow: 0 1px 2px rgba(0,0,0,0.07); box-shadow: 0 1px 2px rgba(0,0,0,0.07); } .paper::before { content: ''; position: absolute; width: 4px; top: 0; left: 30px; bottom: 0; border: 1px solid; border-color: transparent #efe4e4; } textarea{display: block; width:94%;margin:0 auto;padding:3.8% 3%; border: none; outline: none; height: 94%; background: transparent; line-height: 20px;} </style> <body spellcheck="false"> <div class="paper"> <textarea autofocus="autofocus"></textarea> </div> </body> </html>

瀏覽器 1 秒變身 Python 編輯器

如何變身Python編輯器?

接下來,我們來看怎樣將瀏覽器打造成Python編輯器。只需要在地址欄輸入下面的代碼即可:

  1. data:text/html, <style type="text/css">.e{position:absolute;top:0;right:0;bottom:0;left:0;}</style><div class="e" id="editor"></div><script src="http://d1n0x3qji82z53.cloudfront.net/src-min-noconflict/ace.js" type="text/javascript" charset="utf-8"></script><script>var e=ace.edit("editor");e.setTheme("ace/theme/textmate");e.getSession.setMode("ace/mode/python");</script>

這段代碼是由jdkanani在Github上分享的。

事實上,我們只要簡單修改一下上面的代碼,就可以馬上將瀏覽器變成其他語言的編輯器,包括Markdown、C/C++、Javscript、Java等幾乎所有編程語言。你所要做的,只是將代碼中的 ace/mode/python,修改成ace/mode/相應的語言(如java)即可。

除了支持多種語言,它還支持更改頁面主題!Eclipse、Github、Textmate等眾多經典主題,統統支持!只需要將 ace/theme/textmate中的textmate替換成你喜歡的主題即可,如monokai。

渲染Markdown文本

如果你習慣於用Markdown語法寫作,你或許會希望直接在頁面中查看渲染後的效果。只需要輸入下面這行代碼即可:

  1. data:text/html,<style type="text/css">.e{position:absolute;top:0;right:50%;bottom:0;left:0;} .c{position:absolute;overflow:auto;top:0;right:0;bottom:0;left:50%;}</style><div class="e" id="editor"></div><div class="c"></div><script src="http://d1n0x3qji82z53.cloudfront.net/src-min-noconflict/ace.js" type="text/javascript" charset="utf-8"></script><script src="http://cdnjs.cloudflare.com/ajax/libs/showdown/0.3.1/showdown.min.js"></script><script> function showResult(e){consoleEl.innerHTML=e}var e=ace.edit("editor");e.setTheme("ace/theme/monokai");e.getSession.setMode("ace/mode/markdown");var consoleEl=document.getElementsByClassName("c")[0];var converter=new Showdown.converter;e.commands.addCommand({name:"markdown",bindKey:{win:"Ctrl-M",mac:"Command-M"},exec:function(t){var n=e.getSession.getMode.$id;if(n=="ace/mode/markdown"){showResult(converter.makeHtml(t.getValue))}},readOnly:true})</script>

輸入Markdown代碼之後,然後按Ctrl+M或Command+M,就可以將代碼轉換成HTML。

"瀏覽器 1 秒變身 Python 編輯器

這是早期的一篇文章,分享的內容我到現在還是覺得非常有意思。

EarlGrey@編程派

瀏覽器不是用來瀏覽網頁、觀看網絡視頻的嗎?難道還可以在瀏覽器裡碼代碼嗎?

沒錯!真的可以。

現在已經有很多類似JSFiddle、JSBin這樣在線編輯代碼的網站,不過我們今天要分享的方法並不需要註冊第三方網站,只需要在瀏覽器的地址欄輸入一行代碼即可。

我們首先來看一下具體的效果。

瀏覽器 1 秒變身 Python 編輯器

上面這幅圖中,我們發現在瀏覽器中可以輸入Python代碼,而且支持語法高亮和自動縮進功能。那麼,這究竟是怎麼實現的呢?

這其實可以追溯到2012年時,一位叫Jose Aguinaga的國外開發者在Coderwall上分享的一個小貼士。

將瀏覽器變成一個簡易文本編輯器

一開始的功能非常簡單,根本沒有語法高亮,也沒有自動縮進,僅僅是將瀏覽器變成一個文本編輯器而已。

代碼如下:

  1. data:text/html, <html contenteditable>

只需要將上面的代碼複製粘貼到瀏覽器的地址欄,然後按回車,就可以讓瀏覽器變成編輯器。是不是非常簡單?

背後的原理並不高深,只是用到了Data URI格式而已。這行代碼告訴瀏覽器渲染一個HTML頁面,而這個頁面具備一個H5屬性:contenteditable。

Data URI是由RFC 2397定義的一種把小文件直接嵌入文檔的方案。格式如下:data:[

請想嘗試的朋友注意,這行代碼只適用於Chrome等現代瀏覽器。如果你還在使用IE8等過時瀏覽器的話,是沒有效果的。

各種樣式衍生而出

由於上面這個小技巧的出現,激發了許多開發者的的激情,不斷分享自己的版本。

自動切換背景顏色

下面這段代碼,可以讓編輯器在你一邊打字時,一遍切換背景顏色:

  1. data:text/html, <html><head><link href='http://fonts.googleapis.com/css?family=Open+Sans' rel='stylesheet' type='text/css'><style type="text/css"> html { font-family: "Open Sans" } * { -webkit-transition: all linear 1s; }</style><script>window.onload=function{var e=false;var t=0;setInterval(function{if(!e){t=Math.round(Math.max(0,t-Math.max(t/3,1)))}var n=(255-t*2).toString(16);document.body.style.backgroundColor="#ff"+n+""+n},1e3);var n=;document.onkeydown=function{t=Math.min(128,t+2);e=true;clearTimeout(n);n=setTimeout(function{e=false},1500)}}</script></head><body contenteditable style="font-size:2rem;line-height:1.4;max-width:60rem;margin:0 auto;padding:4rem;">

筆記本樣式

下面這段代碼可以將瀏覽器頁面變成一個筆記本的樣式,看上去很有感覺:

  1. data:text/html;charset=utf-8, <title>TextEditor</title> <link rel="shortcut icon" href="http://g.etfv.co/https://docs.google.com"/> <style> html{height: 100%;} body{background: -webkit-linear-gradient(#f0f0f0, #fff); padding: 3%; height: 94%;} .paper { font: normal 12px/1.5 "Lucida Grande", arial, sans-serif; width: 50%; height: 80%; margin: 0 auto; padding: 6px 5px 4px 42px; position: relative; color: #444; line-height: 20px; border: 1px solid #d2d2d2; background: #fff; background: -webkit-gradient(linear, 0 0, 0 100%, from(#d9eaf3), color-stop(4%, #fff)) 0 4px; background: -webkit-linear-gradient(top, #d9eaf3 0%, #fff 8%) 0 4px; background: -moz-linear-gradient(top, #d9eaf3 0%, #fff 8%) 0 4px; background: -ms-linear-gradient(top, #d9eaf3 0%, #fff 8%) 0 4px; background: -o-linear-gradient(top, #d9eaf3 0%, #fff 8%) 0 4px; background: linear-gradient(top, #d9eaf3 0%, #fff 8%) 0 4px; -webkit-background-size: 100% 20px; -moz-background-size: 100% 20px; -ms-background-size: 100% 20px; -o-background-size: 100% 20px; background-size: 100% 20px; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; -webkit-box-shadow: 0 1px 2px rgba(0,0,0,0.07); -moz-box-shadow: 0 1px 2px rgba(0,0,0,0.07); box-shadow: 0 1px 2px rgba(0,0,0,0.07); } .paper::before { content: ''; position: absolute; width: 4px; top: 0; left: 30px; bottom: 0; border: 1px solid; border-color: transparent #efe4e4; } textarea{display: block; width:94%;margin:0 auto;padding:3.8% 3%; border: none; outline: none; height: 94%; background: transparent; line-height: 20px;} </style> <body spellcheck="false"> <div class="paper"> <textarea autofocus="autofocus"></textarea> </div> </body> </html>

瀏覽器 1 秒變身 Python 編輯器

如何變身Python編輯器?

接下來,我們來看怎樣將瀏覽器打造成Python編輯器。只需要在地址欄輸入下面的代碼即可:

  1. data:text/html, <style type="text/css">.e{position:absolute;top:0;right:0;bottom:0;left:0;}</style><div class="e" id="editor"></div><script src="http://d1n0x3qji82z53.cloudfront.net/src-min-noconflict/ace.js" type="text/javascript" charset="utf-8"></script><script>var e=ace.edit("editor");e.setTheme("ace/theme/textmate");e.getSession.setMode("ace/mode/python");</script>

這段代碼是由jdkanani在Github上分享的。

事實上,我們只要簡單修改一下上面的代碼,就可以馬上將瀏覽器變成其他語言的編輯器,包括Markdown、C/C++、Javscript、Java等幾乎所有編程語言。你所要做的,只是將代碼中的 ace/mode/python,修改成ace/mode/相應的語言(如java)即可。

除了支持多種語言,它還支持更改頁面主題!Eclipse、Github、Textmate等眾多經典主題,統統支持!只需要將 ace/theme/textmate中的textmate替換成你喜歡的主題即可,如monokai。

渲染Markdown文本

如果你習慣於用Markdown語法寫作,你或許會希望直接在頁面中查看渲染後的效果。只需要輸入下面這行代碼即可:

  1. data:text/html,<style type="text/css">.e{position:absolute;top:0;right:50%;bottom:0;left:0;} .c{position:absolute;overflow:auto;top:0;right:0;bottom:0;left:50%;}</style><div class="e" id="editor"></div><div class="c"></div><script src="http://d1n0x3qji82z53.cloudfront.net/src-min-noconflict/ace.js" type="text/javascript" charset="utf-8"></script><script src="http://cdnjs.cloudflare.com/ajax/libs/showdown/0.3.1/showdown.min.js"></script><script> function showResult(e){consoleEl.innerHTML=e}var e=ace.edit("editor");e.setTheme("ace/theme/monokai");e.getSession.setMode("ace/mode/markdown");var consoleEl=document.getElementsByClassName("c")[0];var converter=new Showdown.converter;e.commands.addCommand({name:"markdown",bindKey:{win:"Ctrl-M",mac:"Command-M"},exec:function(t){var n=e.getSession.getMode.$id;if(n=="ace/mode/markdown"){showResult(converter.makeHtml(t.getValue))}},readOnly:true})</script>

輸入Markdown代碼之後,然後按Ctrl+M或Command+M,就可以將代碼轉換成HTML。

瀏覽器 1 秒變身 Python 編輯器

背後的原理

看了這幾個例子之後,大家可能已經明白了:這些示例都是通過Data URI格式讓瀏覽器渲染一段HTML代碼。而編輯器相關的樣式已經寫在了代碼中。這與將相應的HTML代碼放在單獨文件中打開的效果是相同的。

而在前兩個例子中,代碼中實際用到了一個叫ace.js的文件,不知道大家注意到沒有?據小編了解,Ace是一個用JavaScript編寫的可嵌入式代碼編輯器,據稱和Sublime、Vim和TextMate等原生編輯的功能和性能相當。而且,它還可以非常容易滴嵌入到任意網頁或JavaScript應用中。

而Ace也是一個叫Cloud9IDE的在線集成開發環境所使用的主要編輯器。具體效果請看下圖:

"瀏覽器 1 秒變身 Python 編輯器

這是早期的一篇文章,分享的內容我到現在還是覺得非常有意思。

EarlGrey@編程派

瀏覽器不是用來瀏覽網頁、觀看網絡視頻的嗎?難道還可以在瀏覽器裡碼代碼嗎?

沒錯!真的可以。

現在已經有很多類似JSFiddle、JSBin這樣在線編輯代碼的網站,不過我們今天要分享的方法並不需要註冊第三方網站,只需要在瀏覽器的地址欄輸入一行代碼即可。

我們首先來看一下具體的效果。

瀏覽器 1 秒變身 Python 編輯器

上面這幅圖中,我們發現在瀏覽器中可以輸入Python代碼,而且支持語法高亮和自動縮進功能。那麼,這究竟是怎麼實現的呢?

這其實可以追溯到2012年時,一位叫Jose Aguinaga的國外開發者在Coderwall上分享的一個小貼士。

將瀏覽器變成一個簡易文本編輯器

一開始的功能非常簡單,根本沒有語法高亮,也沒有自動縮進,僅僅是將瀏覽器變成一個文本編輯器而已。

代碼如下:

  1. data:text/html, <html contenteditable>

只需要將上面的代碼複製粘貼到瀏覽器的地址欄,然後按回車,就可以讓瀏覽器變成編輯器。是不是非常簡單?

背後的原理並不高深,只是用到了Data URI格式而已。這行代碼告訴瀏覽器渲染一個HTML頁面,而這個頁面具備一個H5屬性:contenteditable。

Data URI是由RFC 2397定義的一種把小文件直接嵌入文檔的方案。格式如下:data:[

請想嘗試的朋友注意,這行代碼只適用於Chrome等現代瀏覽器。如果你還在使用IE8等過時瀏覽器的話,是沒有效果的。

各種樣式衍生而出

由於上面這個小技巧的出現,激發了許多開發者的的激情,不斷分享自己的版本。

自動切換背景顏色

下面這段代碼,可以讓編輯器在你一邊打字時,一遍切換背景顏色:

  1. data:text/html, <html><head><link href='http://fonts.googleapis.com/css?family=Open+Sans' rel='stylesheet' type='text/css'><style type="text/css"> html { font-family: "Open Sans" } * { -webkit-transition: all linear 1s; }</style><script>window.onload=function{var e=false;var t=0;setInterval(function{if(!e){t=Math.round(Math.max(0,t-Math.max(t/3,1)))}var n=(255-t*2).toString(16);document.body.style.backgroundColor="#ff"+n+""+n},1e3);var n=;document.onkeydown=function{t=Math.min(128,t+2);e=true;clearTimeout(n);n=setTimeout(function{e=false},1500)}}</script></head><body contenteditable style="font-size:2rem;line-height:1.4;max-width:60rem;margin:0 auto;padding:4rem;">

筆記本樣式

下面這段代碼可以將瀏覽器頁面變成一個筆記本的樣式,看上去很有感覺:

  1. data:text/html;charset=utf-8, <title>TextEditor</title> <link rel="shortcut icon" href="http://g.etfv.co/https://docs.google.com"/> <style> html{height: 100%;} body{background: -webkit-linear-gradient(#f0f0f0, #fff); padding: 3%; height: 94%;} .paper { font: normal 12px/1.5 "Lucida Grande", arial, sans-serif; width: 50%; height: 80%; margin: 0 auto; padding: 6px 5px 4px 42px; position: relative; color: #444; line-height: 20px; border: 1px solid #d2d2d2; background: #fff; background: -webkit-gradient(linear, 0 0, 0 100%, from(#d9eaf3), color-stop(4%, #fff)) 0 4px; background: -webkit-linear-gradient(top, #d9eaf3 0%, #fff 8%) 0 4px; background: -moz-linear-gradient(top, #d9eaf3 0%, #fff 8%) 0 4px; background: -ms-linear-gradient(top, #d9eaf3 0%, #fff 8%) 0 4px; background: -o-linear-gradient(top, #d9eaf3 0%, #fff 8%) 0 4px; background: linear-gradient(top, #d9eaf3 0%, #fff 8%) 0 4px; -webkit-background-size: 100% 20px; -moz-background-size: 100% 20px; -ms-background-size: 100% 20px; -o-background-size: 100% 20px; background-size: 100% 20px; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; -webkit-box-shadow: 0 1px 2px rgba(0,0,0,0.07); -moz-box-shadow: 0 1px 2px rgba(0,0,0,0.07); box-shadow: 0 1px 2px rgba(0,0,0,0.07); } .paper::before { content: ''; position: absolute; width: 4px; top: 0; left: 30px; bottom: 0; border: 1px solid; border-color: transparent #efe4e4; } textarea{display: block; width:94%;margin:0 auto;padding:3.8% 3%; border: none; outline: none; height: 94%; background: transparent; line-height: 20px;} </style> <body spellcheck="false"> <div class="paper"> <textarea autofocus="autofocus"></textarea> </div> </body> </html>

瀏覽器 1 秒變身 Python 編輯器

如何變身Python編輯器?

接下來,我們來看怎樣將瀏覽器打造成Python編輯器。只需要在地址欄輸入下面的代碼即可:

  1. data:text/html, <style type="text/css">.e{position:absolute;top:0;right:0;bottom:0;left:0;}</style><div class="e" id="editor"></div><script src="http://d1n0x3qji82z53.cloudfront.net/src-min-noconflict/ace.js" type="text/javascript" charset="utf-8"></script><script>var e=ace.edit("editor");e.setTheme("ace/theme/textmate");e.getSession.setMode("ace/mode/python");</script>

這段代碼是由jdkanani在Github上分享的。

事實上,我們只要簡單修改一下上面的代碼,就可以馬上將瀏覽器變成其他語言的編輯器,包括Markdown、C/C++、Javscript、Java等幾乎所有編程語言。你所要做的,只是將代碼中的 ace/mode/python,修改成ace/mode/相應的語言(如java)即可。

除了支持多種語言,它還支持更改頁面主題!Eclipse、Github、Textmate等眾多經典主題,統統支持!只需要將 ace/theme/textmate中的textmate替換成你喜歡的主題即可,如monokai。

渲染Markdown文本

如果你習慣於用Markdown語法寫作,你或許會希望直接在頁面中查看渲染後的效果。只需要輸入下面這行代碼即可:

  1. data:text/html,<style type="text/css">.e{position:absolute;top:0;right:50%;bottom:0;left:0;} .c{position:absolute;overflow:auto;top:0;right:0;bottom:0;left:50%;}</style><div class="e" id="editor"></div><div class="c"></div><script src="http://d1n0x3qji82z53.cloudfront.net/src-min-noconflict/ace.js" type="text/javascript" charset="utf-8"></script><script src="http://cdnjs.cloudflare.com/ajax/libs/showdown/0.3.1/showdown.min.js"></script><script> function showResult(e){consoleEl.innerHTML=e}var e=ace.edit("editor");e.setTheme("ace/theme/monokai");e.getSession.setMode("ace/mode/markdown");var consoleEl=document.getElementsByClassName("c")[0];var converter=new Showdown.converter;e.commands.addCommand({name:"markdown",bindKey:{win:"Ctrl-M",mac:"Command-M"},exec:function(t){var n=e.getSession.getMode.$id;if(n=="ace/mode/markdown"){showResult(converter.makeHtml(t.getValue))}},readOnly:true})</script>

輸入Markdown代碼之後,然後按Ctrl+M或Command+M,就可以將代碼轉換成HTML。

瀏覽器 1 秒變身 Python 編輯器

背後的原理

看了這幾個例子之後,大家可能已經明白了:這些示例都是通過Data URI格式讓瀏覽器渲染一段HTML代碼。而編輯器相關的樣式已經寫在了代碼中。這與將相應的HTML代碼放在單獨文件中打開的效果是相同的。

而在前兩個例子中,代碼中實際用到了一個叫ace.js的文件,不知道大家注意到沒有?據小編了解,Ace是一個用JavaScript編寫的可嵌入式代碼編輯器,據稱和Sublime、Vim和TextMate等原生編輯的功能和性能相當。而且,它還可以非常容易滴嵌入到任意網頁或JavaScript應用中。

而Ace也是一個叫Cloud9IDE的在線集成開發環境所使用的主要編輯器。具體效果請看下圖:

瀏覽器 1 秒變身 Python 編輯器

SlimText

程序員都是愛折騰的物種。有的開發者還是不滿足於上面那種手動輸入代碼、將瀏覽器變成編輯器的方法,甚至是直接將真正的編輯器搬到了瀏覽器中運行。這就是我們最後要介紹的SlimText,下面是具體截圖。

"瀏覽器 1 秒變身 Python 編輯器

這是早期的一篇文章,分享的內容我到現在還是覺得非常有意思。

EarlGrey@編程派

瀏覽器不是用來瀏覽網頁、觀看網絡視頻的嗎?難道還可以在瀏覽器裡碼代碼嗎?

沒錯!真的可以。

現在已經有很多類似JSFiddle、JSBin這樣在線編輯代碼的網站,不過我們今天要分享的方法並不需要註冊第三方網站,只需要在瀏覽器的地址欄輸入一行代碼即可。

我們首先來看一下具體的效果。

瀏覽器 1 秒變身 Python 編輯器

上面這幅圖中,我們發現在瀏覽器中可以輸入Python代碼,而且支持語法高亮和自動縮進功能。那麼,這究竟是怎麼實現的呢?

這其實可以追溯到2012年時,一位叫Jose Aguinaga的國外開發者在Coderwall上分享的一個小貼士。

將瀏覽器變成一個簡易文本編輯器

一開始的功能非常簡單,根本沒有語法高亮,也沒有自動縮進,僅僅是將瀏覽器變成一個文本編輯器而已。

代碼如下:

  1. data:text/html, <html contenteditable>

只需要將上面的代碼複製粘貼到瀏覽器的地址欄,然後按回車,就可以讓瀏覽器變成編輯器。是不是非常簡單?

背後的原理並不高深,只是用到了Data URI格式而已。這行代碼告訴瀏覽器渲染一個HTML頁面,而這個頁面具備一個H5屬性:contenteditable。

Data URI是由RFC 2397定義的一種把小文件直接嵌入文檔的方案。格式如下:data:[

請想嘗試的朋友注意,這行代碼只適用於Chrome等現代瀏覽器。如果你還在使用IE8等過時瀏覽器的話,是沒有效果的。

各種樣式衍生而出

由於上面這個小技巧的出現,激發了許多開發者的的激情,不斷分享自己的版本。

自動切換背景顏色

下面這段代碼,可以讓編輯器在你一邊打字時,一遍切換背景顏色:

  1. data:text/html, <html><head><link href='http://fonts.googleapis.com/css?family=Open+Sans' rel='stylesheet' type='text/css'><style type="text/css"> html { font-family: "Open Sans" } * { -webkit-transition: all linear 1s; }</style><script>window.onload=function{var e=false;var t=0;setInterval(function{if(!e){t=Math.round(Math.max(0,t-Math.max(t/3,1)))}var n=(255-t*2).toString(16);document.body.style.backgroundColor="#ff"+n+""+n},1e3);var n=;document.onkeydown=function{t=Math.min(128,t+2);e=true;clearTimeout(n);n=setTimeout(function{e=false},1500)}}</script></head><body contenteditable style="font-size:2rem;line-height:1.4;max-width:60rem;margin:0 auto;padding:4rem;">

筆記本樣式

下面這段代碼可以將瀏覽器頁面變成一個筆記本的樣式,看上去很有感覺:

  1. data:text/html;charset=utf-8, <title>TextEditor</title> <link rel="shortcut icon" href="http://g.etfv.co/https://docs.google.com"/> <style> html{height: 100%;} body{background: -webkit-linear-gradient(#f0f0f0, #fff); padding: 3%; height: 94%;} .paper { font: normal 12px/1.5 "Lucida Grande", arial, sans-serif; width: 50%; height: 80%; margin: 0 auto; padding: 6px 5px 4px 42px; position: relative; color: #444; line-height: 20px; border: 1px solid #d2d2d2; background: #fff; background: -webkit-gradient(linear, 0 0, 0 100%, from(#d9eaf3), color-stop(4%, #fff)) 0 4px; background: -webkit-linear-gradient(top, #d9eaf3 0%, #fff 8%) 0 4px; background: -moz-linear-gradient(top, #d9eaf3 0%, #fff 8%) 0 4px; background: -ms-linear-gradient(top, #d9eaf3 0%, #fff 8%) 0 4px; background: -o-linear-gradient(top, #d9eaf3 0%, #fff 8%) 0 4px; background: linear-gradient(top, #d9eaf3 0%, #fff 8%) 0 4px; -webkit-background-size: 100% 20px; -moz-background-size: 100% 20px; -ms-background-size: 100% 20px; -o-background-size: 100% 20px; background-size: 100% 20px; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; -webkit-box-shadow: 0 1px 2px rgba(0,0,0,0.07); -moz-box-shadow: 0 1px 2px rgba(0,0,0,0.07); box-shadow: 0 1px 2px rgba(0,0,0,0.07); } .paper::before { content: ''; position: absolute; width: 4px; top: 0; left: 30px; bottom: 0; border: 1px solid; border-color: transparent #efe4e4; } textarea{display: block; width:94%;margin:0 auto;padding:3.8% 3%; border: none; outline: none; height: 94%; background: transparent; line-height: 20px;} </style> <body spellcheck="false"> <div class="paper"> <textarea autofocus="autofocus"></textarea> </div> </body> </html>

瀏覽器 1 秒變身 Python 編輯器

如何變身Python編輯器?

接下來,我們來看怎樣將瀏覽器打造成Python編輯器。只需要在地址欄輸入下面的代碼即可:

  1. data:text/html, <style type="text/css">.e{position:absolute;top:0;right:0;bottom:0;left:0;}</style><div class="e" id="editor"></div><script src="http://d1n0x3qji82z53.cloudfront.net/src-min-noconflict/ace.js" type="text/javascript" charset="utf-8"></script><script>var e=ace.edit("editor");e.setTheme("ace/theme/textmate");e.getSession.setMode("ace/mode/python");</script>

這段代碼是由jdkanani在Github上分享的。

事實上,我們只要簡單修改一下上面的代碼,就可以馬上將瀏覽器變成其他語言的編輯器,包括Markdown、C/C++、Javscript、Java等幾乎所有編程語言。你所要做的,只是將代碼中的 ace/mode/python,修改成ace/mode/相應的語言(如java)即可。

除了支持多種語言,它還支持更改頁面主題!Eclipse、Github、Textmate等眾多經典主題,統統支持!只需要將 ace/theme/textmate中的textmate替換成你喜歡的主題即可,如monokai。

渲染Markdown文本

如果你習慣於用Markdown語法寫作,你或許會希望直接在頁面中查看渲染後的效果。只需要輸入下面這行代碼即可:

  1. data:text/html,<style type="text/css">.e{position:absolute;top:0;right:50%;bottom:0;left:0;} .c{position:absolute;overflow:auto;top:0;right:0;bottom:0;left:50%;}</style><div class="e" id="editor"></div><div class="c"></div><script src="http://d1n0x3qji82z53.cloudfront.net/src-min-noconflict/ace.js" type="text/javascript" charset="utf-8"></script><script src="http://cdnjs.cloudflare.com/ajax/libs/showdown/0.3.1/showdown.min.js"></script><script> function showResult(e){consoleEl.innerHTML=e}var e=ace.edit("editor");e.setTheme("ace/theme/monokai");e.getSession.setMode("ace/mode/markdown");var consoleEl=document.getElementsByClassName("c")[0];var converter=new Showdown.converter;e.commands.addCommand({name:"markdown",bindKey:{win:"Ctrl-M",mac:"Command-M"},exec:function(t){var n=e.getSession.getMode.$id;if(n=="ace/mode/markdown"){showResult(converter.makeHtml(t.getValue))}},readOnly:true})</script>

輸入Markdown代碼之後,然後按Ctrl+M或Command+M,就可以將代碼轉換成HTML。

瀏覽器 1 秒變身 Python 編輯器

背後的原理

看了這幾個例子之後,大家可能已經明白了:這些示例都是通過Data URI格式讓瀏覽器渲染一段HTML代碼。而編輯器相關的樣式已經寫在了代碼中。這與將相應的HTML代碼放在單獨文件中打開的效果是相同的。

而在前兩個例子中,代碼中實際用到了一個叫ace.js的文件,不知道大家注意到沒有?據小編了解,Ace是一個用JavaScript編寫的可嵌入式代碼編輯器,據稱和Sublime、Vim和TextMate等原生編輯的功能和性能相當。而且,它還可以非常容易滴嵌入到任意網頁或JavaScript應用中。

而Ace也是一個叫Cloud9IDE的在線集成開發環境所使用的主要編輯器。具體效果請看下圖:

瀏覽器 1 秒變身 Python 編輯器

SlimText

程序員都是愛折騰的物種。有的開發者還是不滿足於上面那種手動輸入代碼、將瀏覽器變成編輯器的方法,甚至是直接將真正的編輯器搬到了瀏覽器中運行。這就是我們最後要介紹的SlimText,下面是具體截圖。

瀏覽器 1 秒變身 Python 編輯器

如截圖所示,SlimText是一個真正的瀏覽器端的代碼編輯器,以Chrome插件的形式存在,文件結構、文件搜索、文件保存等功能一應具有。它是一位名叫tylerlong的國人開發的,支持Windows、Linux和Mac OS X等多個平臺。

感興趣的話,建議你直接通過Chrome Web Store安裝。

回覆下方「關鍵詞」,獲取優質資源

回覆關鍵詞「 pybook03」,立即獲取主頁君與小夥伴一起翻譯的《Think Python 2e》電子版

回覆關鍵詞「pybooks02」,立即獲取 O'Reilly 出版社推出的免費 Python 相關電子書合集

回覆關鍵詞「書單02」,立即獲取主頁君整理的 10 本 Python 入門書的電子版

"瀏覽器 1 秒變身 Python 編輯器

這是早期的一篇文章,分享的內容我到現在還是覺得非常有意思。

EarlGrey@編程派

瀏覽器不是用來瀏覽網頁、觀看網絡視頻的嗎?難道還可以在瀏覽器裡碼代碼嗎?

沒錯!真的可以。

現在已經有很多類似JSFiddle、JSBin這樣在線編輯代碼的網站,不過我們今天要分享的方法並不需要註冊第三方網站,只需要在瀏覽器的地址欄輸入一行代碼即可。

我們首先來看一下具體的效果。

瀏覽器 1 秒變身 Python 編輯器

上面這幅圖中,我們發現在瀏覽器中可以輸入Python代碼,而且支持語法高亮和自動縮進功能。那麼,這究竟是怎麼實現的呢?

這其實可以追溯到2012年時,一位叫Jose Aguinaga的國外開發者在Coderwall上分享的一個小貼士。

將瀏覽器變成一個簡易文本編輯器

一開始的功能非常簡單,根本沒有語法高亮,也沒有自動縮進,僅僅是將瀏覽器變成一個文本編輯器而已。

代碼如下:

  1. data:text/html, <html contenteditable>

只需要將上面的代碼複製粘貼到瀏覽器的地址欄,然後按回車,就可以讓瀏覽器變成編輯器。是不是非常簡單?

背後的原理並不高深,只是用到了Data URI格式而已。這行代碼告訴瀏覽器渲染一個HTML頁面,而這個頁面具備一個H5屬性:contenteditable。

Data URI是由RFC 2397定義的一種把小文件直接嵌入文檔的方案。格式如下:data:[

請想嘗試的朋友注意,這行代碼只適用於Chrome等現代瀏覽器。如果你還在使用IE8等過時瀏覽器的話,是沒有效果的。

各種樣式衍生而出

由於上面這個小技巧的出現,激發了許多開發者的的激情,不斷分享自己的版本。

自動切換背景顏色

下面這段代碼,可以讓編輯器在你一邊打字時,一遍切換背景顏色:

  1. data:text/html, <html><head><link href='http://fonts.googleapis.com/css?family=Open+Sans' rel='stylesheet' type='text/css'><style type="text/css"> html { font-family: "Open Sans" } * { -webkit-transition: all linear 1s; }</style><script>window.onload=function{var e=false;var t=0;setInterval(function{if(!e){t=Math.round(Math.max(0,t-Math.max(t/3,1)))}var n=(255-t*2).toString(16);document.body.style.backgroundColor="#ff"+n+""+n},1e3);var n=;document.onkeydown=function{t=Math.min(128,t+2);e=true;clearTimeout(n);n=setTimeout(function{e=false},1500)}}</script></head><body contenteditable style="font-size:2rem;line-height:1.4;max-width:60rem;margin:0 auto;padding:4rem;">

筆記本樣式

下面這段代碼可以將瀏覽器頁面變成一個筆記本的樣式,看上去很有感覺:

  1. data:text/html;charset=utf-8, <title>TextEditor</title> <link rel="shortcut icon" href="http://g.etfv.co/https://docs.google.com"/> <style> html{height: 100%;} body{background: -webkit-linear-gradient(#f0f0f0, #fff); padding: 3%; height: 94%;} .paper { font: normal 12px/1.5 "Lucida Grande", arial, sans-serif; width: 50%; height: 80%; margin: 0 auto; padding: 6px 5px 4px 42px; position: relative; color: #444; line-height: 20px; border: 1px solid #d2d2d2; background: #fff; background: -webkit-gradient(linear, 0 0, 0 100%, from(#d9eaf3), color-stop(4%, #fff)) 0 4px; background: -webkit-linear-gradient(top, #d9eaf3 0%, #fff 8%) 0 4px; background: -moz-linear-gradient(top, #d9eaf3 0%, #fff 8%) 0 4px; background: -ms-linear-gradient(top, #d9eaf3 0%, #fff 8%) 0 4px; background: -o-linear-gradient(top, #d9eaf3 0%, #fff 8%) 0 4px; background: linear-gradient(top, #d9eaf3 0%, #fff 8%) 0 4px; -webkit-background-size: 100% 20px; -moz-background-size: 100% 20px; -ms-background-size: 100% 20px; -o-background-size: 100% 20px; background-size: 100% 20px; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; -webkit-box-shadow: 0 1px 2px rgba(0,0,0,0.07); -moz-box-shadow: 0 1px 2px rgba(0,0,0,0.07); box-shadow: 0 1px 2px rgba(0,0,0,0.07); } .paper::before { content: ''; position: absolute; width: 4px; top: 0; left: 30px; bottom: 0; border: 1px solid; border-color: transparent #efe4e4; } textarea{display: block; width:94%;margin:0 auto;padding:3.8% 3%; border: none; outline: none; height: 94%; background: transparent; line-height: 20px;} </style> <body spellcheck="false"> <div class="paper"> <textarea autofocus="autofocus"></textarea> </div> </body> </html>

瀏覽器 1 秒變身 Python 編輯器

如何變身Python編輯器?

接下來,我們來看怎樣將瀏覽器打造成Python編輯器。只需要在地址欄輸入下面的代碼即可:

  1. data:text/html, <style type="text/css">.e{position:absolute;top:0;right:0;bottom:0;left:0;}</style><div class="e" id="editor"></div><script src="http://d1n0x3qji82z53.cloudfront.net/src-min-noconflict/ace.js" type="text/javascript" charset="utf-8"></script><script>var e=ace.edit("editor");e.setTheme("ace/theme/textmate");e.getSession.setMode("ace/mode/python");</script>

這段代碼是由jdkanani在Github上分享的。

事實上,我們只要簡單修改一下上面的代碼,就可以馬上將瀏覽器變成其他語言的編輯器,包括Markdown、C/C++、Javscript、Java等幾乎所有編程語言。你所要做的,只是將代碼中的 ace/mode/python,修改成ace/mode/相應的語言(如java)即可。

除了支持多種語言,它還支持更改頁面主題!Eclipse、Github、Textmate等眾多經典主題,統統支持!只需要將 ace/theme/textmate中的textmate替換成你喜歡的主題即可,如monokai。

渲染Markdown文本

如果你習慣於用Markdown語法寫作,你或許會希望直接在頁面中查看渲染後的效果。只需要輸入下面這行代碼即可:

  1. data:text/html,<style type="text/css">.e{position:absolute;top:0;right:50%;bottom:0;left:0;} .c{position:absolute;overflow:auto;top:0;right:0;bottom:0;left:50%;}</style><div class="e" id="editor"></div><div class="c"></div><script src="http://d1n0x3qji82z53.cloudfront.net/src-min-noconflict/ace.js" type="text/javascript" charset="utf-8"></script><script src="http://cdnjs.cloudflare.com/ajax/libs/showdown/0.3.1/showdown.min.js"></script><script> function showResult(e){consoleEl.innerHTML=e}var e=ace.edit("editor");e.setTheme("ace/theme/monokai");e.getSession.setMode("ace/mode/markdown");var consoleEl=document.getElementsByClassName("c")[0];var converter=new Showdown.converter;e.commands.addCommand({name:"markdown",bindKey:{win:"Ctrl-M",mac:"Command-M"},exec:function(t){var n=e.getSession.getMode.$id;if(n=="ace/mode/markdown"){showResult(converter.makeHtml(t.getValue))}},readOnly:true})</script>

輸入Markdown代碼之後,然後按Ctrl+M或Command+M,就可以將代碼轉換成HTML。

瀏覽器 1 秒變身 Python 編輯器

背後的原理

看了這幾個例子之後,大家可能已經明白了:這些示例都是通過Data URI格式讓瀏覽器渲染一段HTML代碼。而編輯器相關的樣式已經寫在了代碼中。這與將相應的HTML代碼放在單獨文件中打開的效果是相同的。

而在前兩個例子中,代碼中實際用到了一個叫ace.js的文件,不知道大家注意到沒有?據小編了解,Ace是一個用JavaScript編寫的可嵌入式代碼編輯器,據稱和Sublime、Vim和TextMate等原生編輯的功能和性能相當。而且,它還可以非常容易滴嵌入到任意網頁或JavaScript應用中。

而Ace也是一個叫Cloud9IDE的在線集成開發環境所使用的主要編輯器。具體效果請看下圖:

瀏覽器 1 秒變身 Python 編輯器

SlimText

程序員都是愛折騰的物種。有的開發者還是不滿足於上面那種手動輸入代碼、將瀏覽器變成編輯器的方法,甚至是直接將真正的編輯器搬到了瀏覽器中運行。這就是我們最後要介紹的SlimText,下面是具體截圖。

瀏覽器 1 秒變身 Python 編輯器

如截圖所示,SlimText是一個真正的瀏覽器端的代碼編輯器,以Chrome插件的形式存在,文件結構、文件搜索、文件保存等功能一應具有。它是一位名叫tylerlong的國人開發的,支持Windows、Linux和Mac OS X等多個平臺。

感興趣的話,建議你直接通過Chrome Web Store安裝。

回覆下方「關鍵詞」,獲取優質資源

回覆關鍵詞「 pybook03」,立即獲取主頁君與小夥伴一起翻譯的《Think Python 2e》電子版

回覆關鍵詞「pybooks02」,立即獲取 O'Reilly 出版社推出的免費 Python 相關電子書合集

回覆關鍵詞「書單02」,立即獲取主頁君整理的 10 本 Python 入門書的電子版

瀏覽器 1 秒變身 Python 編輯器

你想要的 IT 電子資源,這裡可能都有

Python 或將超越 C、Java,成為最受歡迎的語言

Python 容器使用的 5 個技巧和 2 個誤區

如何寫出優雅的 Python 函數?

題圖:pexels,CC0 授權。

"

相關推薦

推薦中...