国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

html規定元素內容是否可編輯的屬性contenteditable

來源:懂視網 責編:小采 時間:2020-11-27 15:28:12
文檔

html規定元素內容是否可編輯的屬性contenteditable

html規定元素內容是否可編輯的屬性contenteditable:實例一段可編輯的段落:<p contenteditable="true">這是一個可編輯的段落。</p>瀏覽器支持IEFirefoxChromeSafariOpera所有主流瀏覽器都支持 contenteditable 屬性。定義和用法contenteditable 屬性規定元
推薦度:
導讀html規定元素內容是否可編輯的屬性contenteditable:實例一段可編輯的段落:<p contenteditable="true">這是一個可編輯的段落。</p>瀏覽器支持IEFirefoxChromeSafariOpera所有主流瀏覽器都支持 contenteditable 屬性。定義和用法contenteditable 屬性規定元

實例

一段可編輯的段落:

<p contenteditable="true">這是一個可編輯的段落。</p>

瀏覽器支持

IE

Firefox

Chrome

Safari

Opera

所有主流瀏覽器都支持 contenteditable 屬性。

定義和用法

contenteditable 屬性規定元素內容是否可編輯。

注釋:如果元素未設置 contenteditable 屬性,那么元素會從其父元素繼承該屬性。

HTML 4.01 與 HTML5 之間的差異

contenteditable 屬性是 HTML5 中的新屬性。

語法

<element contenteditable="true|false">

屬性值

描述
true規定元素可編輯。
false規定元素不可編輯。

在HTML里面,光標是一個對象,光標對象是只有當你選中某個元素的時候才會出現的。

當我們去點擊一個輸入框的時候,實際上它會產生一個選中對象-selection(就是我們可以看到的文字變成藍色的那個區域),selection在火狐瀏覽器可以直接用 window.getSelection()獲取,在HTML里面,selection只有一個的,并且selection是一個區域,你可以想象成一個長方形,它是有開始和結束的

當你點擊一個輸入框,或者你切換到別的輸入框,selection是會跟著變化的。光標就是在selection里面,光標叫做range,是一個片段區域,和selection一樣,有開始點,和結束點,當我們對文字按下左鍵向右拉的時候,就看到了文字變成藍色,那個就是光標的開始和結束,當我們直接點一下的時候,光標在閃,其實只是開始和結束點重疊了。

OK,現在我們來實際操作光標了。直接看完整的代碼,然后看效果吧。

<!DOCTYPE html><html lang="en"><head>
 <meta charset="UTF-8">
 <title></title>
 <style>#edit{height:500px;width:500px;border:1px solid red;}</style></head><body>
 <div id="edit" contenteditable></div>
 <input type="text" id="emojiInput">
 <button id="sendEmoji">發送表情</button>

 <script>
 var sendEmoji = document.getElementById('sendEmoji') // 定義最后光標對象
 var lastEditRange; // 編輯框點擊事件
 document.getElementById('edit').onclick = function() { // 獲取選定對象
 var selection = getSelection() // 設置最后光標對象
 lastEditRange = selection.getRangeAt(0)
 } // 編輯框按鍵彈起事件
 document.getElementById('edit').onkeyup = function() { // 獲取選定對象
 var selection = getSelection() // 設置最后光標對象
 lastEditRange = selection.getRangeAt(0)
 } // 表情點擊事件
 document.getElementById('sendEmoji').onclick = function() { // 獲取編輯框對象
 var edit = document.getElementById('edit') // 獲取輸入框對象
 var emojiInput = document.getElementById('emojiInput') // 編輯框設置焦點
 edit.focus() // 獲取選定對象
 var selection = getSelection() // 判斷是否有最后光標對象存在
 if (lastEditRange) { // 存在最后光標對象,選定對象清除所有光標并添加最后光標還原之前的狀態
 selection.removeAllRanges()
 selection.addRange(lastEditRange)
 } // 判斷選定對象范圍是編輯框還是文本節點
 if (selection.anchorNode.nodeName != '#text') { // 如果是編輯框范圍。則創建表情文本節點進行插入
 var emojiText = document.createTextNode(emojiInput.value) 
 if (edit.childNodes.length > 0) { // 如果文本框的子元素大于0,則表示有其他元素,則按照位置插入表情節點
 for (var i = 0; i < edit.childNodes.length; i++) { if (i == selection.anchorOffset) {
 edit.insertBefore(emojiText, edit.childNodes[i])
 }
 }
 } else { // 否則直接插入一個表情元素
 edit.appendChild(emojiText)
 } // 創建新的光標對象
 var range = document.createRange() // 光標對象的范圍界定為新建的表情節點
 range.selectNodeContents(emojiText) // 光標位置定位在表情節點的最大長度
 range.setStart(emojiText, emojiText.length) // 使光標開始和光標結束重疊
 range.collapse(true) // 清除選定對象的所有光標對象
 selection.removeAllRanges() // 插入新的光標對象
 selection.addRange(range)
 } else { // 如果是文本節點則先獲取光標對象
 var range = selection.getRangeAt(0) // 獲取光標對象的范圍界定對象,一般就是textNode對象
 var textNode = range.startContainer; // 獲取光標位置
 var rangeStartOffset = range.startOffset; // 文本節點在光標位置處插入新的表情內容
 textNode.insertData(rangeStartOffset, emojiInput.value) // 光標移動到到原來的位置加上新內容的長度
 range.setStart(textNode, rangeStartOffset + emojiInput.value.length) // 光標開始和光標結束重疊
 range.collapse(true) // 清除選定對象的所有光標對象
 selection.removeAllRanges() // 插入新的光標對象
 selection.addRange(range)
 } // 無論如何都要記錄最后光標對象
 lastEditRange = selection.getRangeAt(0)
 } </script></body></html>

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

html規定元素內容是否可編輯的屬性contenteditable

html規定元素內容是否可編輯的屬性contenteditable:實例一段可編輯的段落:<p contenteditable="true">這是一個可編輯的段落。</p>瀏覽器支持IEFirefoxChromeSafariOpera所有主流瀏覽器都支持 contenteditable 屬性。定義和用法contenteditable 屬性規定元
推薦度:
標簽: 內容 可編輯 html
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 国产成人久久久精品毛片 | 国产欧美另类第一页 | 无遮挡在线观看 | 精品在线观看国产 | 91午夜精品亚洲一区二区三区 | 成人精品视频在线观看完整版 | 一级一级特黄女人精品毛片视频 | 亚洲国产日韩欧美在线as乱码 | 啪啪亚洲| 亚洲欧美日韩色 | 一级毛片一级毛片 | 久久99精品一区二区三区 | 国产成人精品久久亚洲高清不卡 | 欧美极品尤物在线播放一级 | 欧美a色爱欧美综合v | 伊人色综合97| 日韩经典一区 | 国产精品久久久久久亚洲伦理 | 国产资源视频在线观看 | 国产成人综合久久精品亚洲 | 亚洲欧洲国产经精品香蕉网 | 亚洲欧洲高清 | 亚洲精品乱码久久久久久 | 一级一级特黄女人精品毛片视频 | 国产在线视频不卡 | 97国产精品欧美一区二区三区 | 亚洲欧洲在线视频 | 欧美 日韩 国产在线 | 国内偷自第一二三区 | 亚洲国产成人久久一区www | 美女全黄网站 | 欧美精品午夜久久久伊人 | 精品久久久久久久一区二区手机版 | 精品国产日韩亚洲一区在线 | 国产在线看不卡一区二区 | 在线视频观看国产 | 成人精品视频一区二区在线 | 日韩免费一区二区三区在线 | 欧美另类图片亚洲偷 | 国产福利一区二区三区在线观看 | 欧美日韩福利视频 |