JavaScript監聽文字節點內容改變
關於Mutation Observer用法可以參閱Mutation Observer用法一章節。
文字內容的改變屬於characterData型別改變之一。
characterData由character+data構成,字面意思是字元資料,這裡不準求翻譯的準確,只求實質。
字元資料包括如下三種:
(1).文字節點。
(2).註釋節點.
(3).處理指令節點。
由於文字節點操作比較頻繁,這裡僅以監聽文字節點內容改變為例子。
首先看一段程式碼例項:
[HTML] 純文字檢視 複製程式碼執行程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script> window.onload = function () { let txt = document.querySelector("li").childNodes[0]; let Observer = new MutationObserver(function (mutations, instance) { console.log(mutations); console.log(instance); mutations.forEach(function (mutation) { console.log(mutation); }); }); Observer.observe(txt, { characterData:true, characterDataOldValue:true }); txt.data = "螞蟻部落"; } </script> </head> <body> <div id="box"> <ul> <li>螞蟻部落歡迎您</li> </ul> </div> </body> </html>
程式碼執行效果截圖如下:
程式碼分析如下:
(1).通過MutationObserver建構函式建立一個監聽器物件Observer。
(2).給建構函式傳遞一個回撥函式,但是此回撥函式並不會立即執行,而是在其他所有指令碼執行完畢後再執行。
(3).回撥函式具有兩個引數,第一個引數是存放所有改變的陣列,第二個引數是建構函式建立的監聽器物件Observer。
(4).上面操作已經建立了監聽器物件,那麼就可以使用物件的observe方法對文字節點進行監聽,程式碼如下:
[JavaScript] 純文字檢視 複製程式碼Observer.observe(txt, { characterData:true, characterDataOldValue:true });
上面程式碼分析如下:
(1).observe方法第一個引數是被監聽的文字節點。
(2).第二個引數是一個配置物件,characterData:true表示要監聽characterData型別節點,characterDataOldValue:true表示儲存改變之前的舊資料,此配置物件還可以有更多內容,具體參閱Mutation Observer用法一章節。
特別說明:要監聽文字節點的改變,必須要監聽文字節點本身,而不是其他元素,比如文字節點的父元素。
[HTML] 純文字檢視 複製程式碼執行程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script> window.onload = function () { let txt = document.querySelector("li").childNodes[0]; let Observer = new MutationObserver(function (mutations, instance) { let oshow=document.querySelector("#show"); oshow.innerHTML="文字內容由'"+mutations[0].oldValue+"'改變為'"+ mutations[0].target.data+"'"; }); Observer.observe(txt, { characterData:true, characterDataOldValue:true }); txt.data = "螞蟻部落"; } </script> </head> <body> <div id="box"> <ul> <li>螞蟻部落歡迎您</li> </ul> </div> <div id="show"></div> </body> </html>
改變li元素中的文字之後,會在show中顯示一段提示語。
上述程式碼僅僅是演示文字節點改變監聽功能,並未考慮程式碼的適用性和嚴謹性,僅供參考。
相關文章
- JavaScript 監聽子節點改變JavaScript
- JavaScript監聽後代節點改變JavaScript
- JavaScript監聽屬性改變JavaScript
- jquery監聽文字框內容變化程式碼例項jQuery
- 實時監聽文字框內容變化程式碼例項
- 監聽Dom節點變化 - Mutation ObserverServer
- Swift_監聽UITextField內容的變化SwiftUI
- Android檔案或資料夾內容改變監聽器(FileObserver)AndroidServer
- 實時監聽div,input內容改變並獲取值(包括指令碼動態新增)指令碼
- javascript的節點相關內容介紹JavaScript
- Python監測監聽螢幕介面內容變化併傳送通知Python
- uniapp獲取通知欄內容 監聽通知欄內容APP
- 設定Flume監聽檔案內容
- JavaScript動態建立文字節點JavaScript
- app直播原始碼,監聽EditText輸入框內輸入內容的變化APP原始碼
- JavaScript 文字框輸入內容同步JavaScript
- 11.2資料庫監聽的改變資料庫
- Android的文字框內容改變的時候執行指定方法Android
- JavaScript實時監聽input中值變化JavaScript
- javascript如何建立一個文字節點JavaScript
- vue-router 2.0 改變的內容Vue
- jquery實現改變所匹配的內容jQuery
- 監聽DOM載入完成及改變——MutationObserver應用Server
- JavaScript 事件監聽JavaScript事件
- 在repeater中使用javascript作文字框的改變JavaScript
- 點選文字框實現文字框內容選中效果
- linux 監控檔案內容變化Linux
- javascript刪除具有指定文字內容的li元素JavaScript
- Zookeeper(2)---節點屬性、監聽和許可權
- 【轉】JavaScript對Json節點的增刪改JavaScriptJSON
- JavaScript讀取文字檔案內容程式碼例項JavaScript
- 1-6 至2-2 節 JavaScript的內容JavaScript
- JavaScript練習題目(1)按鈕改變文字域值JavaScript
- vue-router watch 監聽路由引數改變觸發函式Vue路由函式
- javascript監聽鍵盤事件JavaScript事件
- vue 監聽路由變化Vue路由
- jQuery點選文字框清除內容程式碼例項jQuery
- 點選實現選中指定元素的文字內容