60 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
---
 | 
						||
title: HTML Dom Innerhtml Property
 | 
						||
localeTitle: HTML Dom Innerhtml属性
 | 
						||
---
 | 
						||
## HTML Dom Innerhtml属性
 | 
						||
 | 
						||
`innerHTML` prop返回所选元素中的HTML内容,并允许您定义新的HTML内容。
 | 
						||
 | 
						||
**_获取元素内容_**
 | 
						||
 | 
						||
```html
 | 
						||
 | 
						||
<div id="demo"> 
 | 
						||
  <p>Demo</p> 
 | 
						||
 </div> 
 | 
						||
```
 | 
						||
 | 
						||
```javascript
 | 
						||
var element = document.getElementById("demo"); 
 | 
						||
 console.log(element.innerHTML) //logs <p>Demo</p> 
 | 
						||
```
 | 
						||
 | 
						||
**_设置元素内容_**
 | 
						||
 | 
						||
```html
 | 
						||
 | 
						||
<div id="demo"></div> 
 | 
						||
```
 | 
						||
 | 
						||
```javascript
 | 
						||
var element = document.getElementById("demo"); 
 | 
						||
 element.innerHTML = "<div>Demo</div>"; 
 | 
						||
```
 | 
						||
 | 
						||
HTML现在就像
 | 
						||
 | 
						||
```html
 | 
						||
 | 
						||
<div id="demo"> 
 | 
						||
  <div>Demo</div> 
 | 
						||
 </div> 
 | 
						||
```
 | 
						||
 | 
						||
**_安全考虑_**
 | 
						||
 | 
						||
设置为`innerHTML`的值应该来自可靠来源,因为Javascript会将任何内容放在该元素中,并且它将作为纯HTML运行。
 | 
						||
 | 
						||
例:
 | 
						||
 | 
						||
设置“ `<script>alert();</script>` ”值将导致Javascript“alert()”函数被触发:
 | 
						||
 | 
						||
```javascript
 | 
						||
var element = document.getElementById("demo"); 
 | 
						||
 
 | 
						||
 element.innerHTML = "<script>alert();</script>"; 
 | 
						||
```
 | 
						||
 | 
						||
这种类型的攻击称为[Cross Site Scripting,简称XSS](https://en.wikipedia.org/wiki/Cross-site_scripting) 。
 | 
						||
 | 
						||
这是提交XSS攻击的最常见方式之一。如果您想学习更多知识并学会防范它, [请查看此资源](https://xss-game.appspot.com/) |