摘要:但是,現(xiàn)在我只需要一個(gè)很基本的內(nèi)容輸入內(nèi)容編輯的功能,如粗體斜體列表對(duì)齊等。的作用相當(dāng)神奇,可以讓或整個(gè)網(wǎng)頁(yè),以及等等元素設(shè)置為可編輯。現(xiàn)在,事情就很簡(jiǎn)單了,我們把要執(zhí)行的命令放到屬性中,然后編寫(xiě)簡(jiǎn)單的都可以很容易地完成編輯器功能了。
背景
我們平時(shí)用到的瀏覽器編輯器功能都會(huì)比較多,實(shí)現(xiàn)的代碼邏輯也會(huì)非常復(fù)雜,往往是作為一個(gè)多帶帶插件被引入進(jìn)來(lái)的。但是,現(xiàn)在我只需要一個(gè)很基本的內(nèi)容輸入內(nèi)容編輯的功能,如:粗體、斜體、列表、對(duì)齊等。那要怎么辦,直接引用個(gè)插件太臃腫了。
借助 HTML5 特性,所有的工具都已經(jīng)可用,所有你需要做的只是配合他們編寫(xiě)一些非常簡(jiǎn)單的 JavaScript 代碼調(diào)用就可以了。
開(kāi)擼你需要兩樣?xùn)|西,第一是:
contenteditable
contenteditable 是 HTML 中的一個(gè)屬性,設(shè)置 HTML標(biāo)簽的 contenteditable=“true” 時(shí),即可開(kāi)啟該元素的編輯模式。contenteditable 的作用相當(dāng)神奇,可以讓 div 或整個(gè)網(wǎng)頁(yè),以及 span 等等元素設(shè)置為可編輯。
我們最常用的輸入文本內(nèi)容是 input 與 textarea,使用 contenteditable 屬性后,可以在div、table、p、span、body等等很多元素中輸入內(nèi)容。如果想要整個(gè)網(wǎng)頁(yè)可編輯,可以在 body 標(biāo)簽內(nèi)設(shè)置 contenteditable。contenteditable 已在 HTML5 標(biāo)準(zhǔn)中得到有效的支持.
第二樣?xùn)|西是一個(gè)功能特殊的函數(shù):
execCommand
execCommand 讓我們能夠?qū)?contenteditable 區(qū)域的內(nèi)容做一些相當(dāng)復(fù)雜的操作。如果你想了解更為詳細(xì)的內(nèi)容可以看這里:The Mozilla Docs。
從本質(zhì)上講, execCommand 有三個(gè)參數(shù):
Command Name – 命令名稱; ShowDefaultUI – 未實(shí)現(xiàn),所以最好設(shè)置為 false; ValueArgument – 命令的參數(shù);
多數(shù)情況下,ValueArgument 可以設(shè)置為 null,但有一種情況:當(dāng)你要設(shè)置一行文本的標(biāo)簽的時(shí)候(h1,h2,p 等),你需要使用 formatBlock 命令,并把標(biāo)簽放到 ValueArgument 中。
現(xiàn)在,事情就很簡(jiǎn)單了,我們把 exexCommand 要執(zhí)行的命令放到 data-role 屬性中,然后編寫(xiě)簡(jiǎn)單的 JavaScript 都可以很容易地完成編輯器功能了。核心代碼其實(shí)就10行:
$(function() { $("#editControls a").click(function(e) { switch($(this).data("role")) { case "h1": case "h2": case "p": document.execCommand("formatBlock", false, "<" + $(this).data("role") + ">"); break; default: document.execCommand($(this).data("role"), false, null); break; } }) });
完整代碼:
Editable WYSIWYG
代碼下載
原文:http://www.admin10000.com/doc...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/81699.html
摘要:但是,現(xiàn)在我只需要一個(gè)很基本的內(nèi)容輸入內(nèi)容編輯的功能,如粗體斜體列表對(duì)齊等。的作用相當(dāng)神奇,可以讓或整個(gè)網(wǎng)頁(yè),以及等等元素設(shè)置為可編輯。現(xiàn)在,事情就很簡(jiǎn)單了,我們把要執(zhí)行的命令放到屬性中,然后編寫(xiě)簡(jiǎn)單的都可以很容易地完成編輯器功能了。 背景 我們平時(shí)用到的瀏覽器編輯器功能都會(huì)比較多,實(shí)現(xiàn)的代碼邏輯也會(huì)非常復(fù)雜,往往是作為一個(gè)單獨(dú)插件被引入進(jìn)來(lái)的。但是,現(xiàn)在我只需要一個(gè)很基本的內(nèi)容輸入內(nèi)...
摘要:它的全稱是數(shù)據(jù)驅(qū)動(dòng)文檔,并且它被稱為一個(gè)互動(dòng)和動(dòng)態(tài)的數(shù)據(jù)可視化庫(kù)網(wǎng)絡(luò)。我們將使用文本編輯器和瀏覽器。出于測(cè)試目的,建議使用工具來(lái)檢查和調(diào)試和,例如或。使矩形反映數(shù)據(jù)目前,我們陣列中的所有矩形沿軸具有相同的位置,并且不代表高度方面的數(shù)據(jù)。 歡迎大家前往騰訊云+社區(qū),獲取更多騰訊海量技術(shù)實(shí)踐干貨哦~ 本文由獨(dú)木橋先生 發(fā)表于云+社區(qū)專欄 介紹 D3.js是一個(gè)JavaScript庫(kù)。它的...
摘要:知乎上也有相關(guān)的討論,開(kāi)發(fā)的下一代編輯器莫非已經(jīng)定義為上一代編輯器了嗎。 這篇是我在知乎的回答,原文在這里:justjavac: VS Code、ATOM這些開(kāi)源文本編輯器的代碼實(shí)現(xiàn)中有哪些奇技淫巧? 研究 V8 比較多,也關(guān)注了一下 vscode 和 atom 的性能,每次 vscode、atom 的 change log 我都會(huì)看一遍。印象最深的是 vscode 1.14 的一次更...
摘要:在這個(gè)編輯器中,和是其中排名靠前的兩個(gè)。是一個(gè)免費(fèi)的輕量級(jí)編輯器和,用于和開(kāi)發(fā)。對(duì)于免費(fèi)的代碼編輯器來(lái)說(shuō),是一個(gè)很好的選擇。可以安裝兩個(gè)命令行實(shí)用程序,用于從啟動(dòng)編輯器,用于管理的軟件包。 對(duì)于JavaScript程序員來(lái)說(shuō),目前有很多很棒的工具可供選擇。本文將會(huì)討論10個(gè)優(yōu)秀的支持javascript,HTML5和CSS開(kāi)發(fā),并且可以使用Markdown進(jìn)行文檔編寫(xiě)的文本編輯器。為什...
閱讀 1451·2023-04-25 19:00
閱讀 4145·2021-11-17 17:00
閱讀 1759·2021-11-11 16:55
閱讀 1518·2021-10-14 09:43
閱讀 3115·2021-09-30 09:58
閱讀 853·2021-09-02 15:11
閱讀 2121·2019-08-30 12:56
閱讀 1401·2019-08-30 11:12