Node.textContent
åºçº¿
广æ³å¯ç¨
èª 2015å¹´7æ èµ·ï¼æ¤ç¹æ§å·²å¨ä¸»æµæµè§å¨ä¸å¾å°æ¯æï¼å¯å¨å¤§å¤æ°è®¾å¤åæµè§å¨çæ¬ä¸æ£å¸¸ä½¿ç¨ã
Node æ¥å£ç textContent 屿§è¡¨ç¤ºä¸ä¸ªèç¹åå
¶åä»£çææ¬å
容ã
夿³¨ï¼textContent å HTMLElement.innerText å®¹ææ··æ·ï¼ä½è¿ä¸¤ä¸ªå±æ§å¨éè¦æ¹é¢æä¸åä¹å¤ ã
å¼
ä¸ä¸ªå符串æ null.
æè¿°
textContent çå¼åå³äºå
·ä½æ
åµï¼
-
妿èç¹æ¯ä¸ä¸ª
documentï¼æè ä¸ä¸ª DOCTYPE ï¼åtextContentè¿ånullã夿³¨ï¼å¦æä½ è¦è·åæ´ä¸ªææ¡£çææ¬ä»¥å CDATA data ï¼å¯ä»¥ä½¿ç¨
document.documentElement.textContentã -
妿èç¹æ¯ä¸ª CDATA sectionãæ³¨éãprocessing instruction æè text nodeï¼
textContentè¿åèç¹å é¨çææ¬å 容ï¼ä¾å¦Node.nodeValueã -
对äºå ¶ä»èç¹ç±»åï¼
textContentå°ææåèç¹çtextContentåå¹¶åè¿åï¼é¤äºæ³¨éå processing instructionsãï¼å¦æè¯¥èç¹æ²¡æåèç¹çè¯ï¼è¿åä¸ä¸ªç©ºå符串ãï¼
å¨èç¹ä¸è®¾ç½® textContent 屿§çè¯ï¼ä¼å é¤å®çææåèç¹ï¼å¹¶æ¿æ¢ä¸ºä¸ä¸ªå
·æç»å®å¼çææ¬èç¹ã
ä¸ innerText çåºå«
ä¸è¦å¯¹ Node.textContent å HTMLElement.innerText ä¹é´ç差弿å°å°æãè½ç¶ååçèµ·æ¥å¾ç¸ä¼¼ï¼ä½æéè¦çä¸åä¹å¤ï¼
-
textContentä¼è·åææå ç´ çå 容ï¼å æ¬<script>å<style>å ç´ ï¼ç¶èinnerTextåªå±ç¤ºç»äººççå ç´ ã -
textContentä¼è¿åèç¹ä¸çæ¯ä¸ä¸ªå ç´ ãç¸åï¼innerTextå CSS æ ·å¼çå½±åï¼å¹¶ä¸ä¸ä¼è¿åéèå ç´ çææ¬ï¼- æ¤å¤ï¼ç±äº
innerTextå CSS æ ·å¼çå½±åï¼å®ä¼è§¦ååæµï¼ reflow ï¼å»ç¡®ä¿æ¯ææ°çè®¡ç®æ ·å¼ãï¼åæµå¨è®¡ç®ä¸å¯è½ä¼é常æè´µï¼å æ¤åºå°½å¯è½é¿å ãï¼
- æ¤å¤ï¼ç±äº
-
ä¸
textContentä¸åçæ¯ï¼å¨ Internet Explorer (å°äºåçäº 11 ççæ¬) ä¸å¯¹innerTextè¿è¡ä¿®æ¹ï¼ä¸ä» ä¼ç§»é¤å½åå ç´ çåèç¹ï¼èä¸è¿ä¼æ°¸ä¹ æ§å°ç ´åææåä»£ææ¬èç¹ãå¨ä¹åä¸å¯è½å次å°èç¹å次æå ¥å°ä»»ä½å ¶ä»å ç´ æåä¸å ç´ ä¸ã
ä¸ innerHTML çåºå«
æ£å¦å
¶åç§°ï¼Element.innerHTML è¿å HTMLãé常ï¼ä¸ºäºå¨å
ç´ ä¸æ£ç´¢æåå
¥ææ¬ï¼äººä»¬ä½¿ç¨ innerHTMLã使¯ï¼textContent é常å
·ææ´å¥½çæ§è½ï¼å ä¸ºææ¬ä¸ä¼è¢«è§£æä¸º HTMLã
æ¤å¤ï¼ä½¿ç¨ textContent å¯ä»¥é²æ¢ XSS æ»å»ã
示ä¾
ç»åºè¿ä¸ª HTML çæ®µï¼
<div id="divA">This is <span>some</span> text!</div>
ä½ å¯ä»¥ä½¿ç¨ textContent å»è·å该å
ç´ çææ¬å
容ï¼
let text = document.getElementById("divA").textContent;
// The text variable is now: 'This is some text!'
æè 设置å ç´ çæåå 容ï¼
document.getElementById("divA").textContent = "This text is different!";
// The HTML for divA is now:
// <div id="divA">This text is different!</div>
IE8 çæ¿ä»£æ¹æ³
// Source: Eli Grey @ https://eligrey.com/blog/post/textcontent-in-ie8
if (
Object.defineProperty &&
Object.getOwnPropertyDescriptor &&
Object.getOwnPropertyDescriptor(Element.prototype, "textContent") &&
!Object.getOwnPropertyDescriptor(Element.prototype, "textContent").get
) {
(function () {
var innerText = Object.getOwnPropertyDescriptor(
Element.prototype,
"innerText",
);
Object.defineProperty(
Element.prototype,
"textContent",
// Passing innerText or innerText.get directly does not work,
// wrapper function is required.
{
get: function () {
return innerText.get.call(this);
},
set: function (s) {
return innerText.set.call(this, s);
},
},
);
})();
}
è§è
| è§è |
|---|
| DOM > # dom-node-textcontent > |